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をキャッシュする
- acts_as_cachedプラグイン
- cached_model Gem
- caboo.se
- http://magicmodels.rubyforge.org/magic_multi_connections/
他にもRubyの書き方、helper、view、ログ出力など、いろいろとパフォーマンス向上する
tipsがありますが、また今度ということで・・・