2008.02.02 Sat

MySQL Limit制限をつけない場合の検索該当件数取得

MySQLでLimit を使って取得する情報に制限をつける場合、Limitを指定しない場合は何件取得できるのかという情報がほしいときがあります。

SQL_CALC_FOUND_ROWSをクエリ文につけることで、全件数の取得が可能になります。

LIMITを使用したクエリ

mysql> SELECT SQL_CALC_FOUND_ROWS * FROM テーブル LIMIT 0,10;

直前のSQL_CALC_FOUND_ROWSを指定したクエリの全件数を取得

mysql> SELECT FOUND_ROWS();
 +--------------+
 | FOUND_ROWS() |
 +--------------+
 | 12345 |
 +--------------+

mysql> SELECT COUNT(*) FROM テーブル;

上記クエリー分で全件数を取得するよりはFOUND_ROWS()を使用したほうが高速に取得することが可能です。

参考サイト

システム構築に関する覚書トップページへ