SQL 陳述句可以加上「EXPLAIN」關鍵字或「EXPLAIN QUERY PLAN」字串。這兩種修改都會讓 SQL 陳述句的行為變成查詢,並傳回有關 SQL 陳述句在未加上 EXPLAIN 關鍵字或字串時如何運作的資訊。
EXPLAIN 和 EXPLAIN QUERY PLAN 的輸出僅供互動式分析和疑難排解使用。輸出的格式詳細資料可能會在 SQLite 的不同版本間變更。應用程式不應使用 EXPLAIN 或 EXPLAIN QUERY PLAN,因為它們的確切行為會變動,而且僅有部分文件記載。
當 EXPLAIN 關鍵字單獨出現時,會讓陳述句的行為變成查詢,傳回它在未加上 EXPLAIN 關鍵字時用來執行指令的虛擬機器指令順序。當 EXPLAIN QUERY PLAN 字串出現時,陳述句會傳回有關將會使用的查詢計畫的高階資訊。
EXPLAIN QUERY PLAN 指令的詳細說明在此。
EXPLAIN 和 EXPLAIN QUERY PLAN 前綴會影響使用已準備陳述句執行sqlite3_step()的行為。使用sqlite3_prepare()或類似函式產生新的已準備陳述句的程序(大部分)不受 EXPLAIN 影響。(前一句的例外是 EXPLAIN QUERY PLAN 使用的一些特殊 opcode 在建置 EXPLAIN QUERY PLAN 已準備陳述句時會略過,作為效能最佳化。)
這表示在 sqlite3_prepare() 期間發生的動作不受 EXPLAIN 影響。
有些 PRAGMA 陳述會在 sqlite3_prepare() 期間而不是在 sqlite3_step() 期間執行其工作。這些 PRAGMA 陳述不受 EXPLAIN 影響。它們在有或沒有 EXPLAIN 前綴的情況下執行相同。不受 EXPLAIN 影響的 PRAGMA 陳述集合可能會因一個版本而異。有些 PRAGMA 陳述會在 sqlite3_prepare() 期間根據其參數執行。為了獲得一致的結果,請避免對 PRAGMA 陳述使用 EXPLAIN。
無論是否存在 EXPLAIN 或 EXPLAIN QUERY PLAN,都會呼叫 授權呼叫回。
此頁面最後修改於 2022-01-08 05:02:57 UTC