因为like参数使用的非常频繁,因此如果能够对like子句使用索引,将很高的提高查询的 效率。 例 select * from city where name like ‘%S%’ 以上查询的执行计划用了全表扫描(TABLE ACCESS FULL),如果能够修改为: select * from city where name like ‘S%’ 那么查询的执行计划将会变成(INDEX RANGE SCAN),成功的利用了name字段的索 引。这意味着Oracle SQL优化器会识别出用于索引的like子句,只要该查询的匹配端是具体 值。因此我们在做like查询时,应该尽量使查询的匹配端是具体值,即使用like ‘S%’。
你说的失效是不是你的表结构改变了?
一般来说没用索引有几种情况
1、查询数据量占总数据量的比例比较大,就走全表扫描
2、在索引字段上用了函数之类的操作,索引也不会使用,除非字段上建立用函数的索引
3、比较时用了like '%..%'之类,索引也不起作用
效率。
例 select * from city where name like ‘%S%’
以上查询的执行计划用了全表扫描(TABLE ACCESS FULL),如果能够修改为:
select * from city where name like ‘S%’
那么查询的执行计划将会变成(INDEX RANGE SCAN),成功的利用了name字段的索
引。这意味着Oracle SQL优化器会识别出用于索引的like子句,只要该查询的匹配端是具体
值。因此我们在做like查询时,应该尽量使查询的匹配端是具体值,即使用like ‘S%’。
在网上搜一下,看看,