found_rows()
MySQL の便利な構文である LIMIT 句を使用したときに、本来全体で何件かを知りたいことは多々ある。そのようなときには、同じ条件で select(*)の SQL 文を実行することで全体の件数が判る。
・・・というのは当たり前の話。ここでは found_rows() 句をメモ。
SELECT SQL_CALC_FOUND_ROWS * FROM mytable WHERE ...... LIMIT 10;
と実行する。
その後
SELECT found_rows();
select SQL_CALC_FOUND_ROWS *, found_rows() from artist_rel limit 10;
で以下のように全体の件数が返ってくる。
SQL_CALC_FOUND オプションがポイント。当然つけない場合よりも遅くなるが、count(*)と2回のクエリを実行するよりは高速になる。
mysql> select found_rows();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- +
-
-
-
-
-
-
-
-
-
-
-
-
-
found_rows() |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- +
-
-
-
-
-
-
-
-
-
-
-
-
-
7049 |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- +
-
-
-
-
-
-
-
-
-
-
-
-
-