关于Oracle索引中的空值

来源:互联网 发布:淘宝联盟如何省钱 编辑:程序博客网 时间:2024/06/05 00:51
索引列为空(NULL)或者组合组合索引的所有列都为空时,此记录将不会包含在B*Tree索引中。这是一个基本概念也是非常重要的概念,因为它意味着无法使用B*TREE索引来查找空值,只能查找非空值(NOT NULL)。

     因此,将可能在WHERE字句中引用的列定义为非空,一使得在这些列上创建 的索引(默认是B*TREE) 变得有效,最佳实践证:这样是聪明的做法。然而,如果符合下面的部分或者所有条件,在索引中使用空值也是值得的。如下:

    1. 列几乎总是空值。
    2.  我们永远不想查找列为空值的记录。
    3. 我们想要查找列不为空值的记录。
    4.  我们希望最小化索引的空间需求。

因为空值不存存储在索引中,所以早符合上述条件的情况下创建索引将会非常紧凑,可以用来快速定位列中有值的记录。 突然发现用QQ日志来写些学习笔记也很不错。

0 0