キモブロ

Please spy check please, Fucking retard

Sushi Motd、チャットログのページングが遅かったのを直しました。

末端の方のページを表示するときにめちゃくちゃ遅かった問題を直した。データ件数がなんかいつのまにか100万件をこえたため、普通にSQLで ORDER BY updated_at DESC LIMIT ? OFFSET ? みたいなことをするとやばいぐらい遅くてどうしようもない感じだったのを改良した。


上記のままだと explain すると普通に Using filesort ってなってるので、これを Using index ってなるように以下のようなクエリに変更した。カラムを制限してるだけ。

SELECT * FROM chat_logs AS tbl1 INNER JOIN
  (SELECT id FROM chat_logs ORDER BY updated_at DESC LIMIT 100 OFFSET 1000000) AS tbl2
  ON tbl1.id = tbl2.id
  ORDER BY updated_at DESC;

新しいこのクエリを explain すると、ちゃんと Using index され、末端のページでも、割と現実的な時間 (0.5秒程度) で処理が終わるようになった。