MySQLコマンドやSQL文に関する各種メモ書き

検索したリストの件数カウントを高速化する

よく 検索結果などに『◯◯件 ヒットしました』と表示するWEBアプリがあります。

その時に,

件数を取得するSQL文は

SELECT * FROM data_table;
SELECT count(*) AS count FROM data_table;

とすることが多いと思いますが、SELECT時に下記のように「SQL_CALC_FOUND_ROWS」を追加しておいて、その後 FOUND_ROWS() を記述するとかなり高速に取得できます。

SELECT SQL_CALC_FOUND_ROWS * FROM data_table;
SELECT FOUND_ROWS() AS count

がSQL文が複雑な場合は逆に遅くなることもあるようです。

http://ma-bank.com/item/998


関連エントリー

No.768
10/07 17:57

edit

高速化