私のdjangoプロジェクトには2つのモデルがあります。djangoの関連フィールドの高速フィルタ
ModelA(models.Model):
id = models.AutoField(primary_key=True)
field1 = ...
~
fieldN = ...
ModelB(models.Model):
id = models.AutoField(primary_key=True)
a = models.ForeignKey(A, on_delete=models.CASCADE)
field1 = ...
~
fieldN = ...
ここで私は1対1の関係A→Bを持っています。表Aには約30の異なるフィールドと10.000+の行があり、表Bには約15と10.000.000+の行があります。最初にいくつかのModelA
フィールドでフィルタリングし、次にフィルタリングされたModelA
行/オブジェクト関連のそれぞれのオブジェクトに対して、ModelB
オブジェクトを取得し、それらを複数のフィールドでフィルタリングする必要があります。その後、私はすべてのModelB
が配列として1つのフィールドにパックされているJSONでそれらをシリアル化する必要があります。
これを1〜3秒で実行できますか?はいの場合、最良のアプローチは何ですか?
私はPostgreSQLを使用します。
EDIT:
は、今私は、単純なModelA
フィールド上のチェーン.filter()
のようにそれをやっているし、その後反復処理QuerySet
をもたらし、各ModelA
インスタンスに対してModelB
のセットされますが、私は疑う、この第二の部分ことソリューションではプロセス全体が遅くなるため、より良い方法があると思います。
実行中のハードウェアがわからないためにクエリがどれくらい時間がかかりますかとは言いませんが、コードを最適化したい場合は、試したことの詳細を提供できる場合に役立ちますこれまでの結果とその結果 – ChidG
@ChidG質問を編集しました – IgorNikolaev