MySQLテーブルのレコード数が多くなってきて検索が徐々に遅くなってきたのでチューニング。 EXPLAINでSELECT文を解析してみたところ、どうも一番肝心のレコードが多いテーブルでインデックスが使われていないみたい。 インデックスの作り方が悪いのか、テーブルの構造が悪いのか、はたまたSQL文が悪いのかいろいろ試しました。 結局どうしてもインデックスが使われずにusing filesortが表示されて泣きそうになりました。 途方に暮れていた時なにげなーくSQL_CALC_FOUND_ROWS文を外してクエリを実行したところ・・・ possible_keysとkeyにしっかりとインデックス名が表示されている・・・ そしてExtraにはUsing where表記のみに・・・! まさか原因がそこだったとは自分の中では盲点でした。 ということでLIMITを解除した件数の取得は別でクエリを発行する