SQL_CALC_FOUND_ROWS(バージョン 4.0.0 以降)では、LIMIT 節を無視した場合に結果セットに含まれるすべてのレコード数を計算するよう MySQL に指示できる。 その後、SELECT FOUND_ROWS() を使用して、計算されたレコード数を取り出せる。
LIMITを使ってリストなどをページングする時に、全部で何レコードあるかも調べないといけないのでSQL_CALC_FOUND_ROWSを使い、次にSELECT FOUND_ROWS() で全レコード数を取得する。
一番初めの表示の時はページングの必要は無いので LIMIT 0,30などで取得し、SELECT FOUND_ROWS()で取得した全レコード数をhiddenに入れておく。
ページングの次へや戻るをクリックされたときは、hiddenの全レコード数を元にLIMITを計算して必要なレコードを取得する。
普通にウェブサイトでページングをしようとすると、最初に全レコードをカウントしないと出来ないが、このほうが大量のデータの時などは時間短縮が出来るようです。
LIMIT節を使用しなかった場合に何件のレコードが存在したかを知りたい時には、SQL_CALC_FOUND_ROWSでLIMITが付いたSQLを実行した直後にSELECT FOUND_ROWS()でレコード数を求めれます。





