goo blog サービス終了のお知らせ 

優柔不断なプログラマの日記

思いつきでポチポチ書きます

(MySQL)SQL_CALC_FOUND_ROWSを使う

2007年06月27日 | プログラミング
最後にSELECTした行数を取得するFOUND_ROWS()。
ページングする場合など、分母が欲しい場合があります。
たとえば100レコードあるけど、1ページに表示するデータは10レコードの場合。
普通に考えたら、10レコード取得するSELECTと、同じ条件でCOUNT(*)するSELECTを発行すると思います。
MySQLにはこういう場合用とも言える機能があります。
以下の実行例の通りです。
ま、SELECTを2回発行することに違いはないですが、スマートですよね。



■SQL_CALC_FOUND_ROWS指定なし
mysql> SELECT * FROM tbl_name LIMIT 10;
-----------------------------
10 rows in set (0.00 sec)

mysql> SELECT FOUND_ROWS();
+--------------+
| FOUND_ROWS() |
+--------------+
| 10 |
+--------------+
1 row in set (0.00 sec)


■SQL_CALC_FOUND_ROWS指定あり
mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name LIMIT 10;
-----------------------------
10 rows in set (0.00 sec)

mysql> SELECT FOUND_ROWS();
+--------------+
| FOUND_ROWS() |
+--------------+
| 42 |
+--------------+
1 row in set (0.00 sec)

最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。