クエリの進行に合わせてフィルターを変更できるモデルに Django クエリを作成したいと考えています。
Activity
クエリを実行しているモデルがあります。各オブジェクトにはフィールドがあり、日付範囲にわたってpostal_code
配列に格納されている複数の郵便番号を照会しています。postal_codes_to_query
郵便番号ごとにオブジェクトが均等に分散されるようにしたいと考えています。私のデータベースには何百万ものアクティビティがあるため、制限を付けてクエリを実行すると、activities
早い段階で一致する郵便番号のみを受け取りpostal_codes_to_query
ます。私の現在のクエリは以下のとおりです。
Activity.objects.filter(postal_code__in=postal_codes_to_query).filter(start_time_local__gte=startTime).filter(start_time_local__lte=endTime).order_by('start_time_local')[:10000]
たとえば 20 個の郵便番号を検索している場合、理想的には 10000 を受け取り、照会した郵便番号ごとactivities
に 500を受け取りたいと考えています。activities
これはDjangoで可能ですか? そうでない場合、これを実現するために作成できるカスタム SQL はありますか? 問題が発生した場合に備えて、Heroku Postgres データベースを使用しています。