如何分析Sqlite查询执行?
我有一个Sqlite数据库,我想检查索引是否正确。MS SQL Analyzer非常擅长分解查询执行和使用的索引如何分析Sqlite查询执行?,sql,sqlite,query-optimization,sql-execution-plan,Sql,Sqlite,Query Optimization,Sql Execution Plan,我有一个Sqlite数据库,我想检查索引是否正确。MS SQL Analyzer非常擅长分解查询执行和使用的索引 Sqlite有类似的工具吗?我知道没有漂亮的图形工具,但是您查找的所有信息都可以从EXPLAIN关键字中找到 考虑一下这个数据库: sqlite> create table users (name, email); sqlite> create index user_names on users (name); 基于电子邮件的查询不会使用索引: sqlite> e
Sqlite有类似的工具吗?我知道没有漂亮的图形工具,但是您查找的所有信息都可以从
EXPLAIN
关键字中找到
考虑一下这个数据库:
sqlite> create table users (name, email);
sqlite> create index user_names on users (name);
基于电子邮件的查询不会使用索引:
sqlite> explain select * from users where email='foo';
地址
操作码
p1
p2
p3
p4
p5
评论
0
痕迹
0
0
0
00
1.
第8条
0
1.
0
福
00
2.
后藤
0
13
0
00
3.
开放阅读
0
2.
0
2.
00
4.
重绕
0
11
0
00
5.
纵队
0
1.
2.
00
6.
氖
1.
10
2.
collseq(二进制)
6a
7.
纵队
0
0
4.
00
8.
纵队
0
1.
5.
00
9
结果
4.
2.
0
00
10
下一个
0
5.
0
01
11
接近
0
0
0
00
12
停止
0
0
0
00
13
交易
0
0
0
00
14
验证饼干
0
5.
0
00
15
台锁
0
2.
0
使用者
00
16
后藤
0
3.
0
00
正如奥蒂斯所说:
EXPLAIN QUERY PLAN SELECT * FROM FOO
如果像我一样,你只是简单地使用它来确保你的索引(索引?)命中,那么这个技巧是否具有更可读的输出呢?有一个很好的图形工具
以下是输出示例:
以及相关博客:
解释查询计划
将提供有关索引使用的信息,而无需VM指令。如果需要,您还可以通过在命令行中启用.EXPLAIN选项来改进输出格式:“.EXPLAIN ON | OFF关闭适合于解释打开或关闭的输出模式”。上述链接已过时,在这里查看有关虚拟机的信息:这里有一个关于该命令输出的很好的解释: