zoukankan      html  css  js  c++  java
  • oracle避免在索引列上使用IS NULL和IS NOT NULL

    避免在索引中使用任何可以为空的列,ORACLE将无法使用该索引 .对于单列索引,如果列包含空值,索引中将不存在此记录. 对于复合索引,如果每个列都为空,索引中同样不存在此记录. 如果至少有一个列不为空,则记录存在于索引中.

    举例:

      如果唯一性索引建立在表的A列和B列上, 并且表中存在一条记录的A,B值为(123,null) , ORACLE将不接受下一条具有相同A,B值(123,null)的记录(插入). 然而如果

    所有的索引列都为空,ORACLE将认为整个键值为空而空不等于空. 因此你可以插入1000

    条具有相同键值的记录,当然它们都是空!

          因为空值不存在于索引列中,所以WHERE子句中对索引列进行空值比较将使ORACLE停用该索引.

    举例:

    低效: (索引失效)

    SELECT …

    FROM DEPARTMENT

    WHERE DEPT_CODE IS NOT NULL;

    高效: (索引有效)

    SELECT …

    FROM DEPARTMENT

    WHERE DEPT_CODE >=0;

  • 相关阅读:
    P2494 [SDOI2011]保密 最小割
    P2765 魔术球问题
    [CTSC2008]祭祀river
    CF311E Biologist
    P4177 [CEOI2008]order
    函数的形参和实参
    python字符编码
    源码安装Vim并配置YCM自动补全插件
    Python基础练习之购物车
    Python字符串的所有操作
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11125232.html
Copyright © 2011-2022 走看看