mysql - 如何使用 SUM(条件) 优化 MySQL 查询

标签 mysql optimization count sum

我有以下 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/

相关文章:

MySQL 字符编码

java - Java中如何将一个POJO映射到另一个POJO?

mysql - 创建表时,是否可以声明多个列具有相同的类型,而无需重复提及类型?

MySQL 数据库为什么 Õ 在搜索时返回为 O

ruby - AWS 上远程机器上的进程计数

sql - 高效使用SQL GROUP BY、SUM、COUNT

mysql - 使用内连接来计算几件事

python - 优化生成变量的拒绝方法

optimization - 使用梯度和(稀疏)Hessian 的无约束优化

algorithm - 如何有效地为一场 8 球比赛筹备台球?