2010-07-08 58 views
42

我正在使用一个SQLite数据库,并希望加快我的查询,也许与索引或完全重构他们。有没有一个工具来配置sqlite查询?

是否有一个工具来配置查询,这可能会帮助我确定事情放缓的地方?

我知道我只需将查询输入SQLite Administrator等工具来计时,但我正在寻找一些比这更有系统性的东西 - 可能是位于后台并查看所有查询的东西我进入了一段时间,给出了瓶颈的细分。

+0

对于一个好问题+1。我也喜欢其中之一。很显然你在问这里之前是用google搜索的,所以可能不太可能。你是否也检查过SOurceForge&FreshMeat? – Mawg 2010-07-08 00:11:06

+1

在google上搜索'sqlite profile'会产生:http://katastrophos.net/andre/blog/2007/01/04/sqlite-simple-timing-profiler-patch/但是这是一个针对sqlite shell的补丁,我宁愿避免,我不认为它做我想要的。Sourceforge/FM没有任何兴趣(不是我在询问原始问题之前已经检查过)。 – bryn 2010-07-08 00:31:46

回答

20

您在这里混合了各种问题。要查看运行的查询和每个查询需要多长时间,如果应用程序链接到该应用程序,或者如果它是您自己的应用程序,则可以更容易地将其写入代码(我们这样做并且全部都是这样),则需要修改sqlite3.dll查询,交易,时间等)。

对于单个查询分析,您可以使用EXPLAIN。它不会告诉你查询中单个步骤的时间,但它会告诉你如何执行查询。

http://www.sqlite.org/lang_explain.html

的SQL语句可以通过关键字“解释”或短语前面“解释查询计划”。任何修改都会导致SQL语句作为查询行为,并返回有关SQL语句在未省略EXPLAIN关键字或短语时将如何操作的信息。

当EXPLAIN关键字本身出现时,它会导致该语句作为查询返回虚拟机指令序列,该指令将用于在EXPLAIN关键字不存在时执行该命令。当EXPLAIN QUERY PLAN短语出现时,该语句会返回有关使用哪些索引的高级信息。

EXPLAIN和EXPLAIN QUERY PLAN的输出仅用于交互式分析和故障排除。输出格式的细节可能会从SQLite的一个版本更改为下一个版本。应用程序不应该使用EXPLAIN或EXPLAIN QUERY PLAN,因为它们的确切行为是无证的,未指定的和可变的。

+0

我会接受这个答案,但它不是我想听到的答案。我希望为这项工作提供稍高一些的工具。 – bryn 2010-08-05 01:32:56

+1

@bryn,我同意你的看法,SQLite通常缺乏好的高级工具。考虑到它的用途有多广泛,这实际上是非常令人惊讶的。也许绝大多数应用程序与简单模式(不需要良好管理或分析工具)的小型数据库(即嵌入式设备)隔离。 – 2010-08-05 02:07:55

32

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

我google了这个,因为我正在寻找一些时间查询和sqlite3客户端有一个计时器元命令。

sqlite的>上

从那里在.timer,所有查询结果都会有附加的CPU计时器统计。 希望这至少有一点帮助。

+6

+1虽然这并没有回答这个问题,但我敢打赌,50%的人来到这个页面正在寻找 – tjb 2012-07-27 10:22:56

+1

这绝对是我来这里的原因;谢谢! – 2013-01-30 03:47:31

2

现在SQLite有实验sqlite3_tracesqlite3_profile(详情请参阅https://www.sqlite.org/c3ref/profile.html)。他们可以派上用场,因为在长时间的测试中有统计/调查罪魁祸首。

相关问题