個人的メモ:Rails AntiPatterns(15)
CHAPTER 8 Scaling and Deploying
AntiPattern: Sluggish SQL
Solution: Reassess Your Domain Model
- 高度に正規化されたテーブルはテーブル間の結合によってパフォーマンスの問題を起こしやすい。
- 単純に結合させるのではなく必要な要素をrails側で取得するようにするとパフォーマンスを改善する事が出来る。
- ★UserがPrefとCityと関連がある場合、下記のように取る事で負荷が減らせる場合がある。
search_pref = Pref.find_by_name('Kanagawa') search_city = City.find_by_name('Yokohama') User.where(pref: search_pref,city: search_city)
- 大きなサイズのテーブルになる事が分かっているなら、テーブル自体非正規化した方がパフォーマンスを向上出来る。
AntiPattern:Painful Performanceの前まで読了。