Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何分析Sqlite查询执行?_Sql_Sqlite_Query Optimization_Sql Execution Plan - Fatal编程技术网

如何分析Sqlite查询执行?

如何分析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数据库,我想检查索引是否正确。MS SQL Analyzer非常擅长分解查询执行和使用的索引


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关闭适合于解释打开或关闭的输出模式”。上述链接已过时,在这里查看有关虚拟机的信息:这里有一个关于该命令输出的很好的解释: