oracle模糊查询的优化策略
1,%前置会导致不走索引 或者走索引但是不如不走 不如走全文检索
2,优化方案:
(1)采取另一种写法:
运用charindex函数
如:select * from table1 where instr('c',username)>0
虽然多了一个>0的判断 但是比不走索引的模糊查询快很多
该句和select * from table1 where username like %c% ;//作用一样
(2)将%反置 做成后置%
(3)如果能确定字符串长度的话 可以用_来占位,但是注意这种方法比较适合从业务角度来看,就是能够确定有几个_
例:
select * from user where username like '%abc';
优化:
select * from user where username like '_abc'; //表示abc前面有一个字符
//占位比%要快
1,%前置会导致不走索引 或者走索引但是不如不走 不如走全文检索
2,优化方案:
(1)采取另一种写法:
运用charindex函数
如:select * from table1 where instr('c',username)>0
虽然多了一个>0的判断 但是比不走索引的模糊查询快很多
该句和select * from table1 where username like %c% ;//作用一样
(2)将%反置 做成后置%
这个在北京的时候用过,忘了现在..... 以后想起来补充.....
(3)如果能确定字符串长度的话 可以用_来占位,但是注意这种方法比较适合从业务角度来看,就是能够确定有几个_
例:
select * from user where username like '%abc';
优化:
select * from user where username like '_abc'; //表示abc前面有一个字符
//占位比%要快