1

特定の 1 日のすべてのレコードを取得するための最適なクエリは何ですか? 私の Weather モデルでは、「timestamp」は標準の DateTimeField です。

私は現在使用しています

start = datetime.datetime(2009, 1, 31)
end = start + datetime.timedelta(hours=23, minutes=59, seconds=59)
Weather.objects.filter(timestamp__range=(start, end))

しかし、もっと効率的な方法があるのだろうか。

4

2 に答える 2

4

django.views.generic.date_based で行う方法は次のとおりです。

{'date_field__range': (datetime.datetime.combine(date, datetime.time.min),
                       datetime.datetime.combine(date, datetime.time.max))} 

まさにこのタイプのクエリ ( http://code.djangoproject.com/ticket/9596 )に対して __date ルックアップを提供するパッチが Django にマージれる予定です。

于 2009-04-05T05:44:44.770 に答える
2
  1. 時期尚早に最適化しないでください
  2. クエリが頻繁に基づいている列にインデックスを付ける
  3. 自動更新された年、月、日の値を (文字列として) 追加するなど、負荷の高い列を最適化します。これは、テストで大幅な高速化が示され、現在既に機能しているものを使用して実行可能ではないと判断した場合にのみ行います。
于 2009-04-05T01:33:51.597 に答える