当前位置: 代码迷 >> Oracle管理 >> 查询dm为4401开头的记录是用like '4401%' 还是 substr(dm,0,4)='4401' 效率高?解决方案
  详细解决方案

查询dm为4401开头的记录是用like '4401%' 还是 substr(dm,0,4)='4401' 效率高?解决方案

热度:644   发布时间:2016-04-24 05:41:03.0
查询dm为4401开头的记录是用like '4401%' 还是 substr(dm,0,4)='4401' 效率高?
返回的记录集比较多.

------解决方案--------------------
like更方便,效率更高.
substr需要建立函数index才行.


引用楼主 newcomer1983 的帖子:
返回的记录集比较多.

------解决方案--------------------
SQL code
可以考虑用INSTR:SQL> SELECT INSTR('4401ZZ4401','4401') STR FROM DUAL;       STR----------         1所以相应的WHERE语句是:WHERE INSTR(DM,'4401') = 1如果数据量大,可以考虑建基于INSTR(DM,'4401')函数的索引。
------解决方案--------------------
我也同意like, 因为二范式里说=的左边少用函数
  相关解决方案