在某些情況下,會需要查詢 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
沒有留言:
張貼留言