Ruby on Railsでパフォーマンス向上する - ActiveRecord編 -

findメソッド

  • 必要なカラムだけ取得する

findメソッドを利用するときは、:selectオプションを指定します。
指定しない場合は・・・

select * from ・・・

SQLが生成されます。
あと:limit、:offsetなどのオプションも指定したほうがいいですね

  • ファインダは使用しない

Model.find_by_xxxxx

の指定はとてもコストがかかります。
method_missingを通してからメソッドを処理しているので、遅くなります。

Model.find_by_sql

Model.find

を利用するようにしましょう。
実際にはActiveRecordは利用しないで、データベースに接続してみた - smoothyで書いたように、
MySQL-Rubyライブラリを利用するのが一番いいのかもしれません。

  • クエリを多く発行しない

当たり前ですが・・・
データベースへアクセスした分だけ処理は遅くなります。
eager loadingなどを利用して、なるべくクエリを少なくしましょう。

Model.find(:all, :include => [:user, :posts])

ActiveRecordをキャッシュする

他にもRubyの書き方、helper、view、ログ出力など、いろいろとパフォーマンス向上する
tipsがありますが、また今度ということで・・・