使用索引计算GROUP BY查询中的行

时间:2014-11-18 03:08:49

标签: sql sqlite group-by

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

    SELECT artist
      FROM media
  GROUP BY artist

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

所以我需要的查询是:

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

问题在于此查询的执行速度不如预期的那么快。

以下是查询计划:

SCAN TABLE media USING INDEX media_idx_14 
SCAN SUBQUERY 1 

我的查询执行SCAN表,而所需的所有信息已经在索引中。

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

1 个答案:

答案 0 :(得分:4)

我建议您尝试此查询:

SELECT COUNT(DISTINCT artist)
FROM media