【问题标题】:Counting rows from a GROUP BY query using an index使用索引计算 GROUP BY 查询中的行数
【发布时间】:2014-11-18 03:08:48
【问题描述】:

我正在使用 sqlite 3.8.2,我想从该查询中计算行数:

    SELECT artist
      FROM media
  GROUP BY artist

注意:该查询非常快,因为它在artist 列上使用索引media_idx_14

所以我需要的查询是:

  SELECT count (*) 
    FROM (
        SELECT artist
          FROM media
      GROUP BY artist
    ) 

问题是此查询的执行速度不如预期。

这是查询计划:

SCAN TABLE media USING INDEX media_idx_14 
SCAN SUBQUERY 1 

我的查询执行了一个表扫描,而它需要的所有信息都已经在索引中。

有没有办法改进我的查询以摆脱低效的表 SCAN?

【问题讨论】:

    标签: sql sqlite group-by


    【解决方案1】:

    我建议尝试这个查询:

    SELECT COUNT(DISTINCT artist)
    FROM media
    

    【讨论】:

    • 简单高效。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 2018-10-26
    • 2020-10-29
    相关资源
    最近更新 更多