select *  from filestate2 where filename = 'E:\metrica\files\20110806\1_00\C20110805.1600-20110805.1700_WHGS44-1005'
这个的执行计划是  全表扫描select filename   from filestate2 where filename = 'E:\metrica\files\20110806\1_00\C20110805.1600-20110805.1700_WHGS44-1005'
采用到了索引。
  我在 FILENAME 上面建立来普通索引不是 唯一索引也不是主键索引。  难道这个地方就不能用索引吗?  求解

解决方案 »

  1.   

    咦?奇怪。我自己试着建了一个表,执行一个SELECT *和SELECT FILENAME的,都走索引啊。。
      

  2.   

    问题找到了。。 
       是我索引没有失效 而是 索引没用。 由于建索引字段的是 nvarchar2 类型。
      由于类型不对 就没有用索引。。
      

  3.   

      表里数据很少吗?很少的话有可能走全表。如果数据量很大的话应该是走索引的,收集信息试试 ANALYZE T
      

  4.   

    路过看看,在cbo下面,oracle有些情况会使用full scan 来代替index scan
      

  5.   

    具体是你没到索引的原因的,具体字段类型varchar2()类型的。