Oracle資料庫索引管理規範

eymit發表於2013-05-30

根據官方文件和平時自己經驗,總結一下oracle資料庫索引管理規範,可能不是很全,下次再補充一些

 

1   索引建立規範和適用情況

 

1.       對於經常查詢的大表,如果返回資料少於15%,需要建立索引(可根據欄位和全表描速度做調整,全表掃描越快,這個值越低)

2.  表的主鍵和唯一健會自動建立索引,外來鍵一般情況下考慮建立索引

·         外來鍵不建立索引的後果(死鎖);

·         對於外來鍵,業務表一般需要建立索引(頻繁發生DML操作的表);

·         對於程式碼表一般可以不建立建立索引(資料基本不會發生改變的表);

3.  在經常使用的關聯查詢的連線欄位上面建立索引,以提高效能。

4.  經常查詢且部分查詢值選擇性很強需要建立索引

5.  列中包含很多空值,但是查詢條件都是需要有值的,需要建立索引

6.  複合索引的建立

  • 正確選擇複合索引中的第一個欄位,一般是選擇性較好的且在where 子句中常出現的欄位上;
  • 複合索引的幾個欄位是否經常同時以and方式出現在where子句中?單欄位查詢是否極少甚至沒有?如果是,則可以建立複合索引;否則考慮單欄位索引;
  • 如果複合索引中包含的欄位經常單獨出現在where子句中,則分解為多個單段索引,同時考慮刪除複合索引;
  • 如果複合索引所包含的欄位超過3 個,那麼仔細考慮其必要性,考慮減少複合的欄位;

 

2   不適合索引的情況

1.  包含很多空值,但是經常查詢的語句中返回條件包含了空值的

2.  Longraw欄位不能建立索引

3.  表非常小,如少於500-1000行資料,不需要建立索引

 

 

 

3   索引維護

1.  定期檢查不使用的索引,對於不使用的索引應該進行刪除,分析沒有效果的索引,定期進行整理

2.  定期檢查索引的碎片情況,對於碎片太多的索引進行重建



參考文件:http://docs.oracle.com/cd/E11882_01/server.112/e25494/indexes002.htm


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21605631/viewspace-762530/,如需轉載,請註明出處,否則將追究法律責任。

相關文章