0

我有一个更新项目的数据库表(item_id, updated_time, key, value)。我想知道每个项目更新了多少次。我目前的查询是:

SELECT item_id, count(*)
FROM (SELECT DISTINCT item_id, updated_time FROM updates)
GROUP BY item_id;

问题是这运行非常缓慢。我的表有 2451 个项目和大约 800 万个更新,数据库目前只涵盖一天。我在和item_id上有索引。updated_time(item_id, updated_time)

我可以让这个查询在 sqlite 中运行得更快吗?转向不那么“精简”的东西会有帮助吗?

4

1 回答 1

0

子查询阻止外部查询中的索引优化。使用单个查询,如下所示:

SELECT item_id,
       count(DISTINCT updated_time)
FROM updates
GROUP BY item_id

使用足够新的 SQLite 版本,这将从覆盖索引运行(检查EXPLAIN QUERY PLAN)。

于 2012-12-22T13:06:34.437 回答