̃Gg[͂ĂȃubN}[Nɒlj

MySQL :: SQL_CALC_FOUND_ROWS オプション と FOUND_ROWS()



mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name WHERE id > 100 LIMIT 10;
mysql> SELECT FOUND_ROWS();

2 番目の SELECT では、最初の SELECT を LIMIT 節なしで実行した場合に返されるレコード数を示す数が返る


mysql> SELECT * FROM tbl_name WHERE id > 100 LIMIT 10;
mysql> SELECT FOUND_ROWS();

2 番目の SELECT では、LIMITで制限されたレコード数を示す「10」が返る
(※該当レコード数が10以上の場合。10以下の時は該当レコード数が返る)


注意:
SELECT SQL_CALC_FOUND_ROWS … を使用した場合、MySQL では完全な結果セットに含まれるレコード数を計算する必要が生じる。
しかし、この場合、結果セットをクライアントに送る必要がないため、LIMIT なしで再度クエリを実行するより時間がかからない。


SQL_CALC_FOUND_ROWS と FOUND_ROWS() は、クエリで返されるレコード数を制限する必要がある場合に、完全な結果セットに含まれるレコード数を(クエリを再実行することなく)確認したいときに役立つ。
例として、検索結果の別のセクションを示すページへのリンクを含むページ画面を表示する Web スクリプトを挙げることができる。
FOUND_ROWS() を使用すると、結果の残りの部分を表示するのにあと何ページ必要か確認できる。




database/mysql/etc/sql_calc_found_rows.txt