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

DB2 使用优化指导线 指引存取路徑:像 Oracle Hint 一樣控制執行計畫

     編輯:DB2 教學

前言

DB2 不支援 Oracle 風格的 /*+ HINT */,但提供 Optimization Guidelines(优化指导线) 機制,以 XML 片段嵌入 SQL 註解,指導優化器選擇連接順序、存取方式(掃描/索引)、連接方法(Hash/Merge/Nested Loop)。

實戰範例

SELECT d.DEPTNAME, e.FIRSTNME, e.LASTNAME
FROM DEPARTMENT D, EMPLOYEE E
WHERE d.DEPTNO = e.WORKDEPT
  AND e.EMPNO LIKE '0001%'
/*
  
    
      
    
  
*/;
  • <msjoin>:指定 Merge Scan Join。
  • <tbscan table="D">:強制 DEPARTMENT 表掃描(Table Scan)。
  • 巢狀結構指定連接順序:D 為外層,E 為內層。

啟用步驟

  1. db2set DB2_OPTPROFILE=YES
  2. db2stop force && db2start 重啟實例生效。

驗證效果

db2expln -d sample -f sql_file -g -t -z ";"
-- 未啟用指導線時:優化器選擇 Hash Join (HSJOIN),EMPLOYEE 走索引掃描
-- 啟用後:計畫變為 Merge Join (MSJOIN),雙表皆 Table Scan 後排序合併

常用指導線元素速查

元素用途
<nljoin>Nested Loop Join
<msjoin>Merge Scan Join
<hsjoin>Hash Join
<tbscan table="T">強制表掃描
<ixscan table="T" index="IDX">強制索引掃描
<block>...</block>子查詢/視圖塊

注意事項

  • 指導線僅作為「建議」,優化器在極端成本差異時可能忽略。
  • 生產環境務必先在測試庫驗證計畫變化與效能影響。
  • 複雜查詢建議配合 db2exfmt 完整分析計畫再撰寫指導線。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved