sql优化之使用like实现模糊查询的教程【亲测有效】

sql语句中用来实现模糊查询,可以在where了句中使用like来达到模糊查询的效果。

可以使用两个通配符: % 零个或多个字符 _ 单一任何字符(下划线) ——————————where a.upload_path like ‘%电子版档案_’;筛选含有电子版档案的数据

SQL> select * from emp2 where job like ‘%RE%’ and ename like ‘%A%’ and mgr like ‘%3%’;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

—– ———- ——— —– ———– ——— ——— ——

Executed in 1.859 seconds

如上所示,LIKE查询一次,就走一次全表扫描,效率非常慢

同样的效果,现在来换做INSTR函数来执行

SQL> select * from emp where instr(job,’RE’)>0 and instr(ename,’A’)>0 and instr(mgr,’3′)>0;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

—– ———- ——— —– ———– ——— ——— ——

Executed in 0.063 seconds

看到了吧,,时间上的差异很明显,INSTR在一瞬间执行完成,因为这个是查找的字段,而非走全表扫描

看来,oracle 内部函数效率还是高些。

因此,大家以后碰到同样的问题,除了全文检索外,这个也是个好方式

注意:

select id, name from users where instr(id, ‘101’) > 0;

等价于

select id, name from users where id like ‘%101%’

测试结果:

select * from gt_alarm where alarm_date like ‘%2016/4/3%’; –11s

select * from gt_alarm where instr(alarm_date,’2016/4/3′)>0; –9s

select * from gt_alarm where alarm_person like ‘%xiuxianxi%’;–11s

select * from gt_alarm where instr(alarm_person,’xiuxianxi’)>0;–8s

通过结果,管中窥豹,可见一斑。

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐