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

0

重い部分は、GROUP BY user_id特に多くのユーザーがいる場合ですので、少し役立つものを追加することをお勧めします。詳細はここでORDER BY NULL読むことができます

于 2013-05-17T15:04:03.737 に答える