Open7
ActiveRecord復習
デフォルトでは1000件づつレコードを取り出す
バッチ処理で使いやすそう。
Customer.find_each(batch_size: 5000) do |customer|
NewsMailer.weekly(customer).deliver_now
end
複合indexは、順番も大事になる。
先にindexを貼った方を先にwhere等の条件にすること。
railsの関連付けで困ったことあればガイドを読めば良い。
制約もleft joinもinner jojnも全部ちゃんとやれる。
has_manyやhas_one、belong_toとincludeはセットっぽい。(joinとかも使えるようになる)
なのでrailsで関連付けを行いたい場合は、テーブルの外部キー見ながら「xxはxxを持っている。属している」を意識してやれば良さそう
railsのSQLのパフォーマンス考えるのってこんな奥深いんだな。
空気で書くのではなく、ちゃんとパフォーマンス考慮して書くようなものなんだな
安易にincludesをすれば良いという問題ではない。
メモリにデータをセットし過ぎるのも問題
データ量が多いテーブルを結合する際は、分けて実行するのが良いのかも
allメソッドで安易に全件のデータを取得しない。
find_eachで1000件ずつなど取得すること
ActiveRecordのオブジェクトはリッチなので生成するのは安易に行なってはだめ。
pluckとか使って、単純なarrayを作るのは大事