索引對資料庫訪問的效能的作用十分巨大,設計合理的索引對於系統效能調整至關重要。而使用索引又是資料庫開發過程中最困難的一點。在設計索引的時候要注意以下幾個方面:
- 在OLTP系統中,盡量避免全表掃描,盡量使絕大多數操作都通過索引訪問
- 資料量很大並且經常變動的表上的索引不易過多,過量的索引會導致插入、更新和刪除操作變慢,產生大量的IO,如果一張表上的索引超過8個,就需要檢查是否這些索引都是必要的。(但是要值得注意的是這條原則很可能被過度的誇大。因為絕大多數OLTP系統,寫操作不足10%,絕大多數的操作是讀。因此如果是設計的合理,並不能說一張表上的索引超過多少就是不合理的)
- 如果索引數量過多,建議刪除部分所有的列都建有獨立索引的複合索引,複合查詢操作可以通過使用兩個獨立列的索引結果集合并來擷取,也可以保障查詢效率
- 小表不要建立索引,可能通過索引訪問速度更慢,把小表放入KEEP 池效率更高
- 索引的PCTFREE、INITTRANS、MAXTRANS參數設定十分重要,特別是對於變化十分大的索引
- 對於比較大的索引,使用索引分割區會改善效率
- 位元影像索引對於列表類值的效果較好(索引大小也比較小),但是位元影像索引不適合變化十分頻繁的表
- 使用函數索引可以避免大量不必要的全表掃描
- 如果索引包含了查詢需要的所有資訊,查詢就不需要訪問表的資料,可以大大提高訪問效率,因此要注意建立合理的複合索引,並注意SQL語句的合理性
- 用好索引組織表
- 可以使用反轉索索引值索引來消除索引相關的熱塊
- 隨著資料的變化,索引的效率會下降,因此定期重建索引對於效能提升有很大協助
- 使用CBO最佳化器的情況下,保證表和索引的資料得到了良好的分析是保證最佳化器選擇最佳執行計畫的關鍵
- 刪除所有不必要的索引。ORACLE 9i提供的新特性可以使DBA能夠跟蹤索引的使用方式,用這個功能找到不使用的索引,並把這些索引刪除
本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/wyzxg/archive/2008/08/27/2835619.aspx