0

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

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。

任何想法如何解决这个问题或提高查询的性能?

4

1 回答 1

1

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

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

于 2012-10-19T15:31:13.893 回答