原文:
对这个列加索引有两种方法:

解决方案 »

  1.   

    同一列只有一部分值加索引,另一部分不加索引,我还没见过?
    象你说的这种只有两个值(N,Y),在oracle里合适使用位图索引
      

  2.   

    在某列上加索引,如果该列有些记录值为NULL,则这些记录并不会在索引里有记录。
      

  3.   

    tom写的书上不是有demo吗?
     create index inx_test on test(case when flag = 'N' then flag else NULL end);
    或是:
     create index idx_test on test(decode(flag, 'N', flag));原理正如3楼所说:
      在某列上加索引,如果该列有些记录值为NULL,则这些记录并不会在索引里有记录。
      

  4.   

    我刚才试了一下
    create index idx_test on test(decode(flag, 'N', flag)); 
     select * from test where flag='N'
    看了计划 还是全表扫描,为什么呢?
      

  5.   

    要这样写:select * from test where decode(flag, 'N', flag) = 'N'