小。快。可靠。
任選三項。
EXPLAIN

1. 語法

sql-stmt

EXPLAIN QUERY PLAN alter-table-stmt analyze-stmt attach-stmt begin-stmt commit-stmt create-index-stmt create-table-stmt create-trigger-stmt create-view-stmt create-virtual-table-stmt delete-stmt delete-stmt-limited detach-stmt drop-index-stmt drop-table-stmt drop-trigger-stmt drop-view-stmt insert-stmt pragma-stmt reindex-stmt release-stmt rollback-stmt savepoint-stmt select-stmt update-stmt update-stmt-limited vacuum-stmt

2. 說明

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 指令的詳細說明在此

2.1. EXPLAIN 在執行時運作,而非準備時

EXPLAIN 和 EXPLAIN QUERY PLAN 前綴會影響使用已準備陳述句執行sqlite3_step()的行為。使用sqlite3_prepare()或類似函式產生新的已準備陳述句的程序(大部分)不受 EXPLAIN 影響。(前一句的例外是 EXPLAIN QUERY PLAN 使用的一些特殊 opcode 在建置 EXPLAIN QUERY PLAN 已準備陳述句時會略過,作為效能最佳化。)

這表示在 sqlite3_prepare() 期間發生的動作不受 EXPLAIN 影響。

此頁面最後修改於 2022-01-08 05:02:57 UTC