Oracle like查询

查询方式:LIKE '%xx%'

普通: SELECT * FROM TABLE T WHERE T.COLUNM LIKE '%xx%'

优化:使用 INSTR

SELECT * FROM TABLE T WHERE INSTR(T.COLUNM, xx)>0

在执行的时候,执行计划显示,消耗值,io值,cpu值均非常大,原因是like后面前模糊查询导致索引失效,进行全表扫描。

 


 

1. 尽量不要使用 like '%%'

 

2. 对于 like '%' (不以 % 开头),Oracle 可以应用 colunm上的index

 

3. 对于 like '%…' 的 (不以 % 结尾),可以利用reverse + function index 的形式,变化成 like '%'

 

4. 非用like'%%'不可时,使用Oracle内部函数:INSTR()解决。

 


 

附录:

instr(string1 , string2[,start_position[,nth_appearence]])

 

string1:要在此字符串中查找。

 

string2:要在string1中查找的字符串。

 

start_position:从string1开始查找的位置。可选,默认为1,正数时,从左到右检索,负数时,从右到左检索。

 

nth_appearence:查找第几次出现string2。可选,默认为1,不能为负。

 

注:如果没有查找到,返回0。

故,上述例子中,

INSTR(T.COLUNM, 'xx')>0,是LIKE;INSTR(T.COLUNM, 'xx')=0,则是NOT LIKE。

转载于:https://www.cnblogs.com/shen-qiang/p/5776038.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值