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
                              • +
1 row in set (0.00 sec)