Django ORMの`prefetch_related`と`select_related`について
DjangoのORMについて、prefetch_relatedとselect_relatedについて調べたので、まとめる。
背景
Django ORMの使い方でprefetch_relatedとselect_relatedについて違いや使い所を理解していなかった。 この機会に調べてみる。
概要
概要の整理をする。
prefetch_relatedとselect_relatedは、クエリセットのメソッドで、リレーションシップを持つモデルのデータを取得する際に使う。
前提として、DjangoにおいてQuerySetは遅延評価されるため、クエリが実行されるまでデータベースにアクセスされない。
prefetch_relatedとselect_relatedは、クエリを実行する前に、リレーションシップを持つモデルのデータを取得するためのメソッドらしい。
N+1問題を解決するために使われることが多い。
そのうえで、prefetch_relatedとselect_relatedの違いを理解して、使い方を覚えていきたい。
KJR020's Blog