本人在一个select 语句中 使用了3个index的条件 3个index都用到了 但是一共有4个index 但是第4个条件select语句中没有 是否 这样就不会使用到第4个index了。
也就是说 使用index就必须使用对应的条件对吗???
谢谢回答

解决方案 »

  1.   

    对,使用index的首要条件是where子句必须包含索引所依赖的列的过滤.
    当然也有例外,你可以忽略掉这种例外
      

  2.   

    当然用不到了,你的条件正好用到3个也只能针对你的sql,有时候就算你条件中指定了index的列,也很可能一个都用不到。还是要了解oracle sql为什么要用index以及使用index的相关条件,index的种类以及优缺点,内容就太多了,不是你想象的那么简单,还要结合CBO来看
      

  3.   

    谢谢大大 那我有一个select用到4张表 其中一张大数据量 没张表都index但是 由于 select语句不好这么改动 也就是 他只用到 3个条件 用到了3个index但是由于这样出现了一个 table access full wip_operade 也就是一个index没用到导致了 速度效率变慢 不知道有没有 啥方法 解决吗??谢谢 我加分得!!
      

  4.   

    不改sql??估计很难,当然有时候比如select ... from table不加条件也是可以用index的。
    你把你的表以及建的index和sql语句贴出来看看
      

  5.   

    如3楼所说,index的知识很丰富,不是三言两语就能说清的,
    强调一下:index没用到不代表会慢,用到了也不代表会快。
    小表没必要用index
    大表查小部分数绝对建议用index
    不说了建议你看下相关的书。
      

  6.   

    1、有索引,没有该索引列条件 ,该索引不一定能用到,
         但有些时候,在where中没有该索引列过滤条件,但可以用到索引,如count记录就可能用到。
    2、有索引,有该索引列也条件,也不一定用得到该索引,要看该索引的效率。
      

  7.   

    楼主,对ORACLE来说,一般建立3个索引就够了.
    超过4个,索引查起来反而会更加慢