问题描述
- oracle like instr 性能
- 网上看了一些例子,说是oracle的instr性能要比like的要好,我自己测试了一下:
select count(*) from t_log_app ; 总数据为13558892行select count(*) from t_log_app where instr(fentityid'CE7AE')>0;
这条语句执行结果为:2606 耗时 40s
select count(*) from t_log_app where fentityid like '%CE7AE%' ;
这条语句执行结果为:2606 耗时 41s
这样看其实性能都差不多。(注:fentityid非索引)再测试一下索引
select count(*) from t_log_app where instr(fitemname'addnew')>0;
这条语句执行结果为:268126 耗时 40s
select count(*) from t_log_app where fitemname like '%addnew%' ;
这条语句执行结果为:268126 耗时 ≈7s
这样看 like又比instr性能要好了。这究竟是什么原因???
解决方案
对于:fitemname like '%addnew%' ; 创建索引其实是没有用的,oracle不会走索引,但是他速度快了,一般是因为之前执行过这个sql,共享池中有缓存
时间: 2024-09-20 10:51:17