如何优化Like语句的模糊查询

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

耗时:1.859秒

如上所示,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

 

耗时:0.063秒

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

 

转载于:https://www.cnblogs.com/IT-TOP/p/10636036.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值