SQLite查询延迟

时间:2012-10-19 13:48:48

标签: sqlite optimization

我有一个非常简单的查询:

SELECT count(id), min(id), max(id), sum(size), sum(frames), sum(catalog_size + file_size)
FROM table1

table1包含大约3000到4000条记录。

我的问题是此查询运行大约需要20秒。由于它不止一次被调用,因此延迟对客户来说非常明显。

此查询是否正常需要20秒?有没有办法改善运行时间? 如果我从SQLite Manager运行相同的查询,则需要几毫秒才能执行。仅当从我们的软件调用查询时才会发生延迟。 EXPLAINEXPLAIN QUERY PLAN没有多大帮助。我们使用SQLite 3.7.3版本和Windows XPe。

有任何想法如何解决此问题或提高查询性能?

1 个答案:

答案 0 :(得分:1)

所有sum都要求必须读取表中的每条记录。

如果表包含的列数多于上面显示的列数,则从磁盘读取的数据包含有用和无用的值(特别是如果您有大blob)。在这种情况下,您可以尝试通过在此查询所需的列之上创建covering index来减少此查询所需的数据。
在3.7.15之前的SQLite版本中,您需要为第一个索引字段添加ORDER BY以强制SQLite使用该索引,但这不适用于所有查询。 (对于您的查询,请尝试更新为this beta,或等待3.7.15。)