N+1 と悪い DB クエリの重大なパフォーマンスへの影響について同僚と話した後、 http: //guides.rubyonrails.org/active_record_querying.htmlにアクセスしました。
ActiveRecord (レール):
clients = Client.includes(:address).limit(10)
クライアントがアドレスを持っていて、クライアントをループしながらそれらにアクセスしようとしている場合、Rails はincludes
先に進んでそれらをクエリに追加するように通知します。これにより、すぐに 9 つのクエリが不要になります。
ジャンゴ:
https://github.com/lilspikey/django-batch-selectは、バッチ クエリのサポートを提供します。上記のRailsが提供するものを達成するための他のライブラリやトリックを知っていますか? また、バッチ選択は同じ方法で懸念に対処しますか、それともこれら 2 つの異なることですか?
select_related
ところで、一見答えのように見えるかもしれませんが、私は について尋ねているわけではありません。address
への外部キーがある状況について話していますclient
。