【问题标题】:Efficient way of counting unique occurances?计算独特事件的有效方法?
【发布时间】:2012-12-09 18:53:43
【问题描述】:

我有一个更新项目(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 中运行得更快吗?转向不那么“精简”的东西会有帮助吗?

【问题讨论】:

    标签: optimization sqlite query-optimization


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-11-09
      • 2019-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多