有表A,字段FA,FB,FC
FA为PK,现在要对FB建立一个索引,数据中每个相同的FB有几百条数据,总共有十几条不同的FB,我对FB建立普通的索引,使用SELECT * FROM A WHERE FB='XXX',使用EXPLAIN PLAN查看,居然没有使用到索引,该如何建立索引呢?

解决方案 »

  1.   

    这个字段数据重复的太多,用B-tree索引效率反而低了。一般认为,位图索引最适合于具有高相同值的列。不过最好还是能改sql,在其他列建索引。
      

  2.   

    那用hints,效率会不会更低了?
      

  3.   

    试过/*+INDEX*/,效率变化不多
    看来对这么小的数据量上,可以不需要索引
    如果表中每个相同的FB有几万条数据,总共有几十条不同的FB,情况会如何呢
    测试哈多
      

  4.   

    测试后,原因不是再索引上
    问题是在字段FB的数据,FB的前8个字符都是相同的,后4个不同,在这样的情况下,建立索引没有用处;后面增加了一个字段,只保存FB的后4位字符,这时对新字段建立的索引,查询时就有效了
    看来实际数据很重要