您好,登錄后才能下訂單哦!
原文:http://www.sqlite.org/lang_explain.html
?
????????關鍵字EXPLAIN”或者語句(by the phrase)“EXPLAIN QUERY PLAN”可以放置在SQL語句之前。(關于這句話提供原文,方便后來者觀看An SQL statement can be preceded by the keyword “EXPLAIN”).如果沒有EXPLAIN關鍵字或者語句,SQL語句和平常返回查詢信息沒有什么兩樣(Either modification causes the SQL statement? to behave as qeruy and to return informationabout how the SQL statement would have operated if the EXPLAIN keyword orphrase had been omitted.)
?
????????“EXPLAIN”和”EXPLAIN QUERY PLAN”的輸出主要用于數據交互的分析以及故障的查找。輸出內容的詳細信息隨著當前SQLite版本的不同,會有所變化。應用程序不應該使用該語句,因為執行的結果是不確定的,并且只有少量的信息記錄下來(since their exact behavior variable and only partially documented).
注:在sqlite3.exe使用教程一文中,簡單介紹了基本使用,并且通過創建索引,來說明如何分析執行的SQL的效率。
?
????????當EXPLAIN關鍵字出現在SQL語句之前說明,查詢的過程中會返回虛擬機執行的指令集合,輸出到控制臺。當使用EXPLAIN QUERY TEXT的時候,會返回更加高級的信息,其實是返回更加詳細的信息。實際上返回的信息主要是掃描整表,還是使用了索引去查詢,當然前提是必要建立索引
EXPLAIN在運行時被執行,不是在預備時
????????EXPLAIN和EXPLAIN QUERY PLAN前綴影響到運行一個調用sqlite3_step的預編譯聲明的功能。通過調用sqlite3_prepare生成一個新的預編譯聲明的過程沒有受到EXPLAIN的影響。例外的情況是,有一些特殊的操作碼禁止使用EXPLAIN QUERY PLAN關鍵字,歸根究底是性能優化的結果。
????????意味著調用sqlite3_prepare函數執行的過程中,不會受到EXPLAIN的影響。
1)某些編譯聲明對sqlite3_prepare起作用,而不是sqlite3_step.這些編譯聲明不受EXPLAIN影響。
2)不管SQL語句中是否指定EXPLAIN或者EXPLAIN QUERY PLAN關鍵字,授權回調( authorizer callback)函數都會被執行
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。