SQLite Explain
sqlite explain
在 sqlite 語句之前,可以使用 "explain" 關鍵字或 "explain query plan" 短語,用于描述表的細節(jié)。
如果省略了 explain 關鍵字或短語,任何的修改都會引起 sqlite 語句的查詢行為,并返回有關 sqlite 語句如何操作的信息。
- 來自 explain 和 explain query plan 的輸出只用于交互式分析和排除故障。
- 輸出格式的細節(jié)可能會隨著 sqlite 版本的不同而有所變化。
- 應用程序不應該使用 explain 或 explain query plan,因為其確切的行為是可變的且只有部分會被記錄。
1. 語法
explain 的語法如下:
explain [sqlite query]
explain query plan 的語法如下:
explain query plan [sqlite query]
假設 company 表有以下記錄:
id name age address salary ---------- ---------- ---------- ---------- ---------- 1 paul 32 california 20000.0 2 allen 25 texas 15000.0 3 teddy 23 norway 20000.0 4 mark 25 rich-mond 65000.0 5 david 27 texas 85000.0 6 kim 22 south-hall 45000.0 7 james 24 houston 10000.0
現(xiàn)在,讓我們檢查 select 語句中的 explain 使用:
sqlite> explain select * from company where salary >= 20000;
這將產(chǎn)生以下結果:
addr opcode p1 p2 p3 ---------- ---------- ---------- ---------- ---------- 0 goto 0 19 1 integer 0 0 2 openread 0 8 3 setnumcolu 0 5 4 rewind 0 17 5 column 0 4 6 realaffini 0 0 7 integer 20000 0 8 lt 357 16 collseq(bi 9 rowid 0 0 10 column 0 1 11 column 0 2 12 column 0 3 13 column 0 4 14 realaffini 0 0 15 callback 5 0 16 next 0 5 17 close 0 0 18 halt 0 0 19 transactio 0 0 20 verifycook 0 38 21 goto 0 1 22 noop 0 0
現(xiàn)在,讓我們檢查 select 語句中的 explain query plan 使用:
sqlite> explain query plan select * from company where salary >= 20000;
order from detail ---------- ---------- ------------- 0 0 table company