2014年4月27日 星期日

建立包含 null 值的 index



在某些情況下,會需要查詢 table 是否有null值,根據Oracle index 的特性 b-tree index是不包含null值的,不過我們通過建立複合式index 即可解決這問題。

建立Test Table


建立一般的 Index


查看執行計畫

建立一個普通的 Index,在查詢是否為null時候,因為並沒有使用該 index,則會使用 full table scan

建立常數複合式index

查看執行計畫




因為使用了index ,consistent gets從226大幅下降到只有4

結論:由於常數複合式索引中null值也會被記錄,在查詢是否有null值時Oracle 就會利用此index則避免 full table scan