Django プロジェクトで実行された SQL クエリを改善 (キャッシング、再構築など) できるように、実行された SQL クエリのレビューを開始しました。
たとえば、データベースから単一のオブジェクトを取得するには、次のようにします。
Company.objects.filter(pk=1)[:1]
より高速:
Company.objects.filter(pk=1)
前者ではルックアップの数を制限しているためです。これは明らかですが、ForeignKey であるモデルのプロパティにアクセスするときに制限を設定する方法はあまり明白ではありません。たとえば、がto CompanyCompanyModelを持つモデルで、メイン モデルからいくつかのプロパティにアクセスしようとするとします。OneToOneField
test = Company.objects.filter(pk=1)[:1]
profile = test.CompanyProfile.owner
CompanyProfile に関する情報を取得するために実行されるクエリには制限がないため、テーブル全体を走査してできるだけ多くのレコードを検索します。そうならないように制限を設定するにはどうすればよいですか?