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

DB2 解釋工具深度解析(二):EXPLAIN 陳述式、特殊暫存器與 BIND 選項完整語法

     編輯:關於SqlServer

承接上篇,本文詳細說明三種主要解釋資料收集指令的完整語法、選項組合與行為差異。

1. EXPLAIN SQL 陳述式

EXPLAIN [ALL | PLAN | PLAN SELECTION]
    [FOR SNAPSHOT | WITH SNAPSHOT]
    FOR SQL_Statement;
  • SQL_Statement:有效的 INSERT/UPDATE/DELETE/SELECT/SELECT INTO/VALUES/VALUES INTO。
  • FOR SNAPSHOT:僅收集解釋快照。
  • WITH SNAPSHOT:同時收集完整解釋資料與快照。
  • 無選項:僅收集完整解釋資料。
  • 不執行 SQL,不顯示結果,需配合其他工具檢視。

範例

-- 僅完整解釋資料
EXPLAIN ALL FOR SELECT * FROM DEPARTMENT;

-- 僅解釋快照
EXPLAIN ALL FOR SNAPSHOT FOR SELECT * FROM DEPARTMENT;

-- 兩者皆收集
EXPLAIN ALL WITH SNAPSHOT FOR SELECT * FROM DEPARTMENT;

2. CURRENT EXPLAIN MODE 特殊暫存器

SET CURRENT EXPLAIN MODE = [NO | YES | EXPLAIN | REOPT | RECOMMEND INDEXES | EVALUATE INDEXES | RECOMMEND PARTITIONINGS | EVALUATE PARTITIONINGS];
  • NO:停用(預設)。
  • YES:收集完整解釋資料,**並執行 SQL**。
  • EXPLAIN:收集完整解釋資料,**不執行 SQL**。
  • REOPT:執行時重新優化(REOPT)時收集(靜態/動態 SQL 皆適用)。
  • RECOMMEND INDEXES / EVALUATE INDEXES:索引建議相關模式。
  • RECOMMEND PARTITIONINGS / EVALUATE PARTITIONINGS:分割建議相關模式。

3. CURRENT EXPLAIN SNAPSHOT 特殊暫存器

SET CURRENT EXPLAIN SNAPSHOT = [YES | NO | EXPLAIN | REOPT];
  • 行為對應 CURRENT EXPLAIN MODE,但收集解釋快照而非完整資料。
  • YES:收集快照並執行 SQL;EXPLAIN:收集快照不執行 SQL。

4. EXPLAIN / EXPLSNAP PRECOMPILE/BIND 選項

用於嵌入式 SQL 應用程式的靜態/動態 SQL 分析:

PRECOMPILE ... EXPLAIN [NO|YES|ALL|REOPT] EXPLSNAP [NO|YES|ALL|REOPT]
BIND ... EXPLAIN [NO|YES|ALL|REOPT] EXPLSNAP [NO|YES|ALL|REOPT]
  • NO:停用。
  • YES:每條靜態 SQL 收集並執行。
  • ALL:每條靜態+動態 SQL 收集(忽略特殊暫存器設定)。
  • REOPT:可重新優化的遞增綁定 SQL 在執行時收集。

行為總結表

設定收集完整資料收集快照執行 SQL
MODE=YES / SNAPSHOT=YES是是是
MODE=EXPLAIN / SNAPSHOT=EXPLAIN是是否
MODE=REOPT / SNAPSHOT=REOPT重新優化時重新優化時是(正常執行)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved