Oracle某一个字段上,空值很多,能建立索引吗?如果可以,是否合理,是否失效?

解决方案 »

  1.   


    这个建个表,在可空字段中建立索引,插入多些数据(因数据少了,执行计划可能执行全表扫描),执行查询where条件中设置此字段查询,看下执行执行计划,应是走你的索引的,若是这样,则结论:可以,合理,不失效我没试,因只有记事本,没法试,呵呵
      

  2.   

    此列空值较多的话,建议不要建立索引,因为空值不会被索引记录键值如果想建,利用nvl函数建函数索引,查询的时候 where nvl(字段,xxx)=xxx 的方式去查。---你的问题
    1、可以建
    2、但是不合理
    3、不失效
      

  3.   

    可以,合理不合理看你怎么用。
    例如,select count(*)就不能利用到这个索引,因为null的记录不会进入索引;
    但是如果,你的查询只是要返回这个字段不为null的记录,就应该创建这个索引。