like vs instr 效率
表中将近有 1100 万数据,很多时候,我们要进行字符串匹配,在 SQL 语句中,我们通常使用 like 来达到我们搜索的目标。但经过实际测试发现,like 的效率与 instr 函数差别相当大。下面是一些测试结果:
SQL> set timing on
SQL> select count(*) from t where instr(title,’手册’)>0;
COUNT(*)
———-
65881
Elapsed: 00:00:11.04
SQL> select count(*) from t where title like ‘% 手册 %’;
COUNT(*)
———-
65881
Elapsed: 00:00:31.47
SQL> select count(*) from t where instr(title,’手册’)=0;
COUNT(*)
———-
11554580
Elapsed: 00:00:11.31
SQL> select count(*) from t where title not like ‘% 手册 %’;
COUNT(*)
———-
11554580
另外,我在另外一个 2 亿多的表,使用 8 个并行,使用 like 查询很久都不出来结果,但使用 instr,4 分钟即完成查找,性能是相当的好。这些小技巧用好,工作效率提高不少。通过上面的测试说明,ORACLE 内建的一些函数,是经过相当程度的优化的。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于