COUNTとCALC_FOUND_ROWSとストアドプロシージャと
WEBアプリケーションで、ページャーにてページ分割をする場合、MySQLではLIMITを使うことになりますが、その際に全体のページ数を計算する為に、対象レコードするを取得する必要があります。この対象レコード数をMySQLのSQLで実現するメジャーな方法として、以下2つの方法があると思います。
- count
- CALC_FOUND_ROWS
以上、それぞれ2つの方法について見てみましょう。
CALC_FOUND_ROWS
まさに、この用途の為にあるような関数です。データ取得用SQLを実行と同時にデータ総数を取得できます。....がデータ量が多かったりすると逆に遅くなったりします。また、複数テーブルをJOINしてGROUP BYしていて非常遅いクエリーでこれをしてしまうと凄まじく遅くなったりします。