我正在使用SQLite数据库,并希望加快我的查询,可能是索引或完全重组它们.
是否有一个工具来分析查询,这可能有助于我决定哪些方面正在放慢速度?
我知道我可以在SQLite管理员这样的工具中输入查询来计算它们,但我正在寻找比这更有系统性的东西 - 也许是在后台的东西,看着我输入的所有查询期间,给出任何瓶颈的细分.
这只会回答问题的一部分(不幸的是,这是最无益的部分).
我搜索了这个,因为我正在寻找时间查询的东西,而sqlite3客户端有一个计时器元命令.
sqlite> .timer
从那里开始,所有查询结果都会附加cpu计时器统计信息.希望这有助于至少一点点.
你在这里有各种各样的问题.要查看运行的查询以及每个查询需要多长时间,您需要修改sqlite3.dll(如果应用程序链接到该应用程序)或者如果它是您自己的应用程序,则可以更轻松地将其写入代码(我们这样做并且所有查询,交易,时间等).
对于个别查询分析,您可以使用EXPLAIN
.它不会告诉您查询中各个步骤的时间,但它会告诉您查询的执行方式.
http://www.sqlite.org/lang_explain.html
SQL语句前面可以是关键字"EXPLAIN"或短语"EXPLAIN QUERY PLAN".这两种修改都会导致SQL语句表现为查询,并返回有关如果省略EXPLAIN关键字或短语后SQL语句将如何操作的信息.
当EXPLAIN关键字本身出现时,它会使该语句表现为一个查询,该查询返回如果没有EXPLAIN关键字,它将用于执行命令的虚拟机指令序列.当EXPLAIN QUERY PLAN短语出现时,该语句返回有关将使用哪些索引的高级信息.
EXPLAIN和EXPLAIN QUERY PLAN的输出仅用于交互式分析和故障排除.输出格式的详细信息可能会从SQLite的一个版本更改为下一个版本.应用程序不应使用EXPLAIN或EXPLAIN QUERY PLAN,因为它们的确切行为是未记录的,未指定的和可变的.