close

 

 

總結:

无论是单列唯一索引或复合唯一索引,对于可以为null的列或复合null值,Oracle不会为其存储索引值。
    故在基于单列创建B树唯一索引或多列创建B树复合唯一索引的情形下,
    当列上允许为null值时
        where子句使用了基于is null的情形,其执行计划走全表扫描。
        where子句使用了基于is not null的情形,其执行计划走索引扫描(索引范围扫描或索引全扫描)。
    当列上不允许为null值时,存在非null约束
        where子句使用了基于is null的情行,其执行计划走索引扫描。
        where子句使用了基于is not null的情形,其执行计划也是走索引扫描。
    注:此在Oracle 10g R2(linux)下的情形,不同的优化器版本可能会有偏差

 

轉:http://f.dataguru.cn/thread-239171-1-1.html

arrow
arrow
    全站熱搜

    to52016 發表在 痞客邦 留言(0) 人氣()