日期:2014-05-17  浏览次数:20743 次

查询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, 因为二范式里说=的左边少用函数