是否有工具来分析sqlite查询?

时间:2010-07-08 00:04:40

标签: profiling sqlite

我正在使用SQLite数据库,并希望加快我的查询速度,可能使用索引或完全重构它们。

是否有工具来分析查询,这可能有助于我确定哪些方面正在放慢速度?

我知道我可以在像SQLite管理员这样的工具中输入查询来计算它们,但我正在寻找比这更有系统性的东西 - 也许是在后台的东西并查看我所有的查询进入一段时间,给出任何瓶颈的细分。

3 个答案:

答案 0 :(得分:34)

这只会回答问题的一部分(不幸的是,这是最无益的部分)。

我搜索了这个,因为我正在寻找时间查询的东西,而sqlite3客户端有一个计时器元命令。

源码> .timer

从那里开始,所有查询结果都会附加cpu计时器统计信息。 希望这有助于至少一点点。

答案 1 :(得分:22)

这里有各种各样的问题。要查看运行的查询以及每个查询需要多长时间,您需要修改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,因为它们的确切行为是未记录的,未指定的和可变的。

答案 2 :(得分:3)

现在,SQLite具有实验sqlite3_tracesqlite3_profile(有关详细信息,请参阅https://www.sqlite.org/c3ref/profile.html)。在长期测试中,他们可以派出统计/调查罪魁祸首。