0

我有以下 MySQL 查询。

  SELECT user_id
         SUM(reached = 'Y') AS reached_count,
         SUM(reached = 'N') AS not_reached_count
    FROM goals
GROUP BY user_id

在表格目标中,我有大约 200 万个条目。执行查询大约需要 45 秒。

沉重的部分似乎SUM(reached = 'Y')需要很长时间。我比较了它COUNT(*)确实更快,但没有区分 Y 和 N。

编辑:reached是类型ENUM('Y','N')

4

2 回答 2

2

尝试在 上添加索引user_id, reached,然后尝试查询:

SELECT user_id, reached, count(*)
FROM goals
GROUP BY user_id, reached
于 2013-05-17T15:08:09.860 回答
0

最重要的部分是GROUP BY user_id特别是如果你有很多用户,所以我建议添加ORDER BY NULL这会有所帮助,你可以在这里阅读更多

于 2013-05-17T15:04:03.737 回答