私は日付付きの一意のレコードを含むDjangoモデルを持っています。私は現在、レコードを数日の範囲に数えています。 X番号はすでに日付に達しており、Xは10日以内に、Xは次の30日以内に発生します。 以下のコードは、私が現在使っているコードです。モデルに対するrecords.objects.all()クエリからすべての値を取得し、各オブジェクトをループしてdatetimeデルタを計算し、関連するカウンタをインクリメントします。周りの50,000レコードの場合datetime diffsの実行日の計算
for x in records:
if x.date is None:
missingValue += 1
else:
delta = x.date - date.today()
if delta.days < 0:
passed += 1
if delta.days < 10:
tenDays += 1
if delta.days < 30:
thirtyDays += 1
これは、私は、レコードの数が増加する可能性があるとして、これを削減しようとしている、もはや私は希望よりもあるおよそ5~6秒かかります。 質問は実際にはdatetime diffのパフォーマンス計算を行い、Django Queryやその他の方法でより良いメソッドがあるかのように結果の日数をグループ化しています。
未処理のSQLでDateAddの使用方法を調べましたが、各日付範囲のデータベースにクエリする必要があり、結果をループする必要があります。
サンプルデータと所望の出力とhttp://www.rextester.comデモをご用意ください。私は純粋なSQLでは1秒以下の時間を得ることができると確信しています。 – lad2025
http://rextester.com/AWPX46055 - 私はそれを正しいと思っています。望ましい出力は、上記のグループによる数字の返却に過ぎず、30日以内に10日以内に渡されます。私はまた30日以上何かの将来の必要性を参照してください。内部の日付は累積されています。 – Draineh
サンプルデータをありがとう – lad2025