rails/ruby(レール3とruby 1.9.2を使用)に新しく、いくつかの不必要なクエリを実行しようとしています。Rails/Active Record。save!効率的な質問
私は各やる実行しているとき:
apples.to_a.each do |apple|
new_apple = apple.clone
new_apple.save!
end
と私は、SQLログをチェックし、私は1つのINSERTステートメントに続く3つのSELECT文を参照してください。 select文はまったく必要ないようです。たとえば、次のようなものです。
SELECT Fruit。* from Fruits where Fruit.ID = 5 LIMIT 1;
Select Color。* from Colors where Color.ID = 6 LIMIT 1;
SELECT TreeType。* from TreeTypes where TreeType.ID = 7 LIMIT 1;
リンゴ(Fruit_id、color_id、treetype_id)に挿入する値(6,7,8)戻り値 "id";
私は70kのインサートを走らせているのに、インサートごとに3つの選択がかなりの時間を費やすことに賭けています。
だから私は、次のことを思ったんだけど:
- はActiveRecordの/のRails .SAVEのこの典型的です!以前の開発者がカスタムコードを追加しましたか?
- これらの3つの選択ステートメントは、それぞれの項目に対して実行されると、余分な時間がかかりますか?
- レール/アクティブレコードに組み込まれていると、より効率的に実行できるようにするには簡単にバイパスされますか?
公正であるために、ActiveRecordは時にはあなたが何をするように言っているのか分からない。 – tadman