SQLite Explain
sqlite explain
在 sqlite 语句之前,可以使用 "explain" 关键字或 "explain query plan" 短语,用于描述表的细节。
如果省略了 explain 关键字或短语,任何的修改都会引起 sqlite 语句的查询行为,并返回有关 sqlite 语句如何操作的信息。
- 来自 explain 和 explain query plan 的输出只用于交互式分析和排除故障。
- 输出格式的细节可能会随着 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
现在,让我们检查 select 语句中的 explain 使用:
sqlite> explain select * from company where salary >= 20000;
这将产生以下结果:
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
现在,让我们检查 select 语句中的 explain query plan 使用:
sqlite> explain query plan select * from company where salary >= 20000;
order from detail ---------- ---------- ------------- 0 0 table company