计算独特事件的有效方法?

时间:2012-12-22 12:39:37

标签: optimization sqlite query-optimization

我有一个项目(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_idupdated_time(item_id, updated_time)的索引。

我可以在sqlite中更快地运行此查询吗?是否会转向不那么“精简”的东西?

1 个答案:

答案 0 :(得分:0)

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

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

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