Django中基于时间戳的最佳查询

时间:2009-04-04 22:57:42

标签: django datetime date timestamp

获取特定日期所有记录的最佳查询是什么? 在我的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))

但是想知道是否有更有效的方法。

2 个答案:

答案 0 :(得分:4)

在django.views.generic.date_based中完成的方式是:

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

很快就会有patch merged into Django为这种类型的查询(http://code.djangoproject.com/ticket/9596)提供__date查找。

答案 1 :(得分:2)

  1. 不要过早优化
  2. 您的查询经常基于的索引列
  3. 优化昂贵的列,例如添加自动更新的年,月和日值(可能只是作为字符串)当且仅当测试显示它提供了显着的加速并且仅在使用现在已经起作用并且确定它不是'之后可行。