上千万条数据,oracle索引失效怎么处理?求助各位

解决方案 »

  1.   

    你建立了索引,用不用由Oracle决定。
    你说的失效是不是你的表结构改变了?
      

  2.   

    你是不是指语句没用索引
    一般来说没用索引有几种情况
    1、查询数据量占总数据量的比例比较大,就走全表扫描
    2、在索引字段上用了函数之类的操作,索引也不会使用,除非字段上建立用函数的索引
    3、比较时用了like '%..%'之类,索引也不起作用
      

  3.   

    因为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%’。
      

  4.   

    《基于索引的SQL语句优化之降龙十八掌》
    在网上搜一下,看看,