0

私はレコードIDのセットを取得するために.pluck(:id)かなり頻繁に(そしてmapそれ以前に)使用しました。これは通常、関連するモデル レコードのセットを取得するためのものです (例: :people has_many :scores, as :assessed)

10,000 人がいるとしますが、People に対するクエリでは 1,000 に制限されます。

people_ids = people.pluck(:id) #people a relation/scoped
scores = Score.where(:assessed_type => 'People', :assessed_id => people_ids)

Score クエリには他にもありますが、私の基本的な質問は、たとえば 1000 個の ID の配列でクエリを実行するのは悪い考えですか?

フィルター処理された Score クエリを使用して、新しい People のセットを取得することを指摘しておく必要があります。これは人に対するフィルターです。

私のテストDBには数百のレコードしかありませんが、それはうまくいきます.しかし、psqlまたはRailsが爆発するポイントがあるに違いありません. 本番環境では、このスコア オプションが使用される前に People が自動的にフィルター処理されるため、ID が 1000 を超えることはありません。

4

0 に答える 0