我有一个项目(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中更快地运行此查询吗?是否会转向不那么“精简”的东西?
答案 0 :(得分:0)
子查询阻止外部查询中的索引优化。 使用单个查询,如下所示:
SELECT item_id,
count(DISTINCT updated_time)
FROM updates
GROUP BY item_id
使用最新的SQLite版本,这将从覆盖索引运行(使用EXPLAIN QUERY PLAN
检查)。