首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

掌握 Oracle 執行計劃機制優化多表聯結查詢效能

     編輯:Oracle 資料庫基礎

SQL 執行準備五階段

  1. 語法檢查
  2. 語義分析(驗證物件存在)
  3. 輪廓快取檢查(Library Cache)
  4. 產生執行計劃(CBO 依統計資訊評估)
  5. 產生二進位執行代碼

硬解析最耗時在階段 4,特別是多表聯結順序排列組合爆炸。

聯結順序排列組合數學

  • 6 表聯結:720 種排列 (6!)
  • 10 表:3,628,800 種
  • 15 表:1.3 兆種

CBO 無法窮盡評估,需透過參數限制搜尋空間。

關鍵優化參數

參數預設值作用
optimizer_search_limit5表數 ≤ 此值時窮盡評估所有排列;亦控制 Star Hint 門檻
optimizer_max_permutations80,000最大評估排列數上限,受 optimizer_search_limit 制約

實際上限 = MIN(optimizer_search_limit!, optimizer_max_permutations)。超過上限後 CBO 選擇當前最低成本路徑。

實務調優建議

  • 收集完整統計資訊(DBMS_STATS),讓 CBO 決策更精準
  • 大型聯結考慮使用 Hint (LEADING, ORDERED) 固定聯結順序
  • 避免單一 SQL 聯結過多表,拆解為暫存表或 Materialized View
  • 觀察 V$SQL_PLAN 確認實際執行計劃
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved