程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle SQL的調優及表、索引的設計和優化

Oracle SQL的調優及表、索引的設計和優化

編輯:Oracle數據庫基礎

OracleSQL調優是一個復雜的主題,不過有一些基本的規則是每個Oracle DBA都需要遵從的,這些規則可以改善他們系統的性能。

其實,SQL調優的目標是簡單的:

◎消除不必要的大表全表搜索:不必要的全表搜索導致大量不必要的I/O,從而拖慢整個數據庫的性能。調優專家首先要根據查詢返回的行數目來評價SQL。在一個有序的表中,如果查詢返回少於40%的行,或者在一個無序的表中,返回少於7%的行,那麼這個查詢都可以調整為使用一個索引來代替全表搜索。對於不必要的全表搜索來說,最常見的調優方法是增加索引。可以在表中加入標准的B樹索引,也可以加入bitmap和基於函數的索引。要決定是否消除一個全表搜索,可以仔細檢查索引搜索的I/O開銷和全表搜索的開銷,它們的開銷和數據塊的讀取和可能的並行執行有關,並將兩者作對比。在一些情況下,一些不必要的全表搜索的消除可以通過強制使用一個index來達到,只需要在SQL語句中加入一個索引的提示就可以了。

◎在全表搜索是一個最快的訪問方法時,將小表的全表搜索放到緩存中,確保有一個專門的數據緩沖用作行緩沖。

◎確保最優的索引使用:對於改善查詢的速度,這是特別重要的。有時Oracle可以選擇多個索引來進行查詢,技術人員在調優時必須檢查每個索引並且確保Oracle使用正確的索引。它還包括bitmap和基於函數的索引的使用。

◎確保最優的JOIN操作:有些查詢使用NESTEDLOOPjoin快一些,有些則是HASHjoin快一些,另外一些則是sort-mergejoin更快。

這些規則看來簡單,不過它們占SQL調優任務的100%。

索引的設計與優化是OracleSQL中的重要內容,索引是表的一個概念部分,用來提高檢索數據的效率,Oracle使用了一個復雜的自平衡B-tree結構。通常,通過索引查詢數據比全表掃描要快。當Oracle找出執行查詢Update語句的最佳路徑時,Oracle優化器將使用索引。同樣在聯結多個表時使用索引也可以提高效率。另一個使用索引的好處是,它提供了主鍵(primary key)的唯一性驗證。那些Long或Long Raw數據類型, 你可以索引幾乎所有的列。通常,在大型表中使用索引特別有效。當然,你也會發現,在掃描小表時,使用索引同樣能提高效率。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved