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