私のRuby/Railsの無知を許して、私はまだ学んでいます。find_byメソッド一致文字列のパフォーマンスを向上させますか?
詳細:
私は2つのモンゴブテーブルを持っています。 people
には214のレコードがあり、people_org
には107が含まれていますが、これは今後増加します。これらのテーブル間の唯一の一意の接続は、人の名前で、平均で15文字までです。私はこの時点でこのDB構造を支配していません。
現在、私は各people
オブジェクトをループしていて、find_by
を使用して一致するレコードを見つけ、必要なIDを印刷して情報を印刷します。
<%@people.each do |p|%>
...
<%[email protected]_org.find_by(name: p.name).id%>
...[priting a few paragraphs of text]...
<%end%>
...
<%end%>
問題:
パフォーマンスが非常に遅い(〜10秒)。
潜在的なソリューション:
(1)私たちのチームは、文字列マッチングに依存しており、(私はこれがパフォーマンスを向上させるだろうと仮定)の代わりに整数を使用しない構造に適合させることができます。
(2)おそらくもっと効率的な方法がありますか?
(3)おそらく、より効果的な並べ替えのためにデータを準備または変更する方法がありますか?
ご協力いただきありがとうございます。
あなたは 'people'と' people_org'間のいずれかのassocitionを持っていますか? – Vishal
MongoDBが提供するルックアップ集約を使用することができます。https://stackoverflow.com/a/35948843/2100645 –
mongoidを使用していますか? – Anthony