Oracle數(shù)據(jù)庫復合索引的性能問題
在實踐中ORACLE數(shù)據(jù)庫復合索引設計不合理可能會引發(fā)性能問題。

通常對于復合索引,優(yōu)先將選擇性最高的字段放在第一位。
建立復合索引時,要充分考慮各字段的篩選度,將篩選性更好的字段排在前面。
篩選度可參考"count(distinct A)/count(*)"或在dba_tab_col_statistics視圖查看num_distinct,唯一值越多,則篩選度就越高,也稱為可選擇性越高,反之亦然。
整改方式,請確認是否測試環(huán)境的表數(shù)據(jù)分布情況與生產(chǎn)相同或相似,如非數(shù)據(jù)原因造成的問題,建議調(diào)整索引字段1和字段2的順序,將說明字段4放到說明字段3前。
在準備調(diào)整復合索引字段順序前,有必要了解復合索引使用的一個重要原則:復合索引最左原則。
復合索引最左原則:即where條件只有使用到最左邊索引列的時候,復合索引才可能被使用到。通常,設計復合索引時,我們需要綜合表上數(shù)據(jù)訪問特點、訪問頻率來設計復合索引中的字段順序,以使一個索引盡量服務于更多的SQL訪問請求。
所以,僅根據(jù)字段可選性的高低來調(diào)整字段順序是不嚴謹?shù)模€需要確認原有索引的使用情況,需確保調(diào)整后,不會有SQL無索引可用,或性能下降是可接受的。如不能確認,建議不做改動。如確有需要,就新建一個索引吧。















 
 
 
 
 
 
 