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 &gt= 20000;
order       from        detail
----------  ----------  -------------
0           0           table company

下一节:sqlite vacuum

sqlite教程

相关文章