我有以下 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')
最佳答案
尝试在user_id,reached
上添加索引,然后尝试查询:
SELECT user_id, reached, count(*)
FROM goals
GROUP BY user_id, reached
关于mysql - 如何使用 SUM(条件) 优化 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16612172/