2

私はアプリケーションを作成しており、Post モデルと Tag モデルの 2 つのモデルがあります。それらには多対多の関連付けがあります。投稿を取得するときに投稿のすべてのタグをロードしたいので、DB への複数のトリップを実行する必要はありません。

モデルは大まかに次のようになります (私はいくつかのプライベートな詳細を省略しました):

class Post < Sequel::Model
  many_to_many :tags
end

class Tag < Sequel::Model
  many_to_many :posts
end

を試してみましたが、これはある程度成功しましたが、最初のタグのみをロードし、配列などにチャッキングする代わりに、Post.eager_graph(:tags)[id]すべてのタグ列名の前に を付けました。tags_一度にすべてのタグをロードする方法はありますか、それともそれらを別々のクエリにしておく必要がありますか?

ご協力いただきありがとうございます!

4

1 に答える 1

2

複数の投稿を熱心に読み込んでいない限り、投稿を取得するときにタグを自動的に読み込んでも意味がありません。JOINしない限り、とにかく複数のクエリが必要になります。また、結合された結果を分割するためにSequelが必要とする追加のオーバーヘッドを考慮すると、JOINは2つの個別のクエリよりも遅くなると思います。

于 2013-03-20T15:04:26.137 に答える