次の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')