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

透過執行計劃推導 Oracle 分散式查詢優化策略實測

     編輯:Oracle 資料庫基礎

測試環境

  • 三組帳號/資料庫,結構與資料相同。
  • 建立 DB Link 連接遠端庫。
  • 開啟 SET AUTOTRACE TRACEONLY 觀察執行計劃與統計。

關鍵觀察與結論

1. 遠端全表掃描會標示 (REMOTE) 與 Global Database Name

SELECT STATEMENT (REMOTE) Optimizer=CHOOSE
TABLE ACCESS (FULL) OF 'WORK_INFO'  OracleDB.US.ORACLE.COM

2. 本地有條件查詢仍走全表掃描

缺乏索引導致 TABLE ACCESS (FULL),需建立索引優化。

3. 跨庫聯結:Oracle 採 NESTED LOOPS + 半聯結

NESTED LOOPS
  REMOTE*  SELECT "WORK_ID" FROM "WORK_INFO"@DBLINK
  TABLE ACCESS (BY INDEX ROWID) OF 'WORK_RULE_INFO'
  INDEX (UNIQUE SCAN) OF 'WORK_RULE_INFO_PK'
  • 遠端只傳回聯結鍵 (WORK_ID),非全表資料 → 半聯結 特徵。
  • 本地驅動表走索引唯一掃描,效率佳。

4. WHERE 條件順序不影響計劃

Oracle 查詢轉換階段會自動重寫,條件順序調換、重複皆無影響。

5. 選投影欄位影響遠端傳輸量

僅選 WORK_NAME 時,遠端 SQL 為 SELECT "WORK_ID","WORK_NAME" ...,減少網路傳輸。

優化建議

  1. 遠端聯結鍵建立索引,本地驅動表建立唯一索引。
  2. 盡量只選需要欄位,避免 SELECT *。
  3. 大量資料跨庫查詢考慮 DRIVING_SITE Hint 將執行推至資料較大端。
  4. 定期收集統計資訊,確保 CBO 生成最佳計劃。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved