文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  取得具名連線的執行計畫資訊

10.8.4 取得具名連線的執行計畫資訊

若要取得在具名連線中執行的可解釋陳述式的執行計畫,請使用此陳述式

EXPLAIN [options] FOR CONNECTION connection_id;

EXPLAIN FOR CONNECTION 會傳回目前用於在指定連線中執行查詢的 EXPLAIN 資訊。由於資料(和支援統計資料)的變更,它可能會產生與在等效查詢文字上執行 EXPLAIN 不同的結果。這種行為差異對於診斷更為短暫的效能問題很有用。例如,如果您在一個工作階段中執行一個陳述式,該陳述式需要很長時間才能完成,則在另一個工作階段中使用 EXPLAIN FOR CONNECTION 可能會產生關於延遲原因的有用資訊。

connection_id 是連線識別碼,可從 INFORMATION_SCHEMA PROCESSLIST 資料表或 SHOW PROCESSLIST 陳述式取得。如果您具有 PROCESS 權限,您可以指定任何連線的識別碼。否則,您只能指定您自己連線的識別碼。在所有情況下,您都必須具有足夠的權限來解釋指定連線上的查詢。

如果具名連線沒有執行陳述式,則結果會是空的。否則,只有當具名連線中執行的陳述式是可解釋的,EXPLAIN FOR CONNECTION 才適用。這包括 SELECTDELETEINSERTREPLACEUPDATE。(但是,EXPLAIN FOR CONNECTION 不適用於預先處理的陳述式,即使是那些類型的預先處理陳述式。)

如果具名連線正在執行可解釋的陳述式,則輸出會與在陳述式本身上使用 EXPLAIN 取得的輸出相同。

如果具名連線正在執行不可解釋的陳述式,則會發生錯誤。例如,您無法指定目前工作階段的連線識別碼,因為 EXPLAIN 是不可解釋的

mysql> SELECT CONNECTION_ID();
+-----------------+
| CONNECTION_ID() |
+-----------------+
|             373 |
+-----------------+
1 row in set (0.00 sec)

mysql> EXPLAIN FOR CONNECTION 373;
ERROR 1889 (HY000): EXPLAIN FOR CONNECTION command is supported
only for SELECT/UPDATE/INSERT/DELETE/REPLACE

Com_explain_other 狀態變數會指出已執行的 EXPLAIN FOR CONNECTION 陳述式數量。