Оптимальный запрос на основе меток времени в Джанго - PullRequest
1 голос
/ 05 апреля 2009

Какой оптимальный запрос для получения всех записей за один конкретный день? В моей модели погоды '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 ]

4 голосов
/ 05 апреля 2009

Как это делается в django.views.generic.date_based:

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

Скоро должен быть патч , объединенный с Django , который обеспечит поиск __date именно для этого типа запроса (http://code.djangoproject.com/ticket/9596).

2 голосов
/ 05 апреля 2009
  1. Не оптимизировать преждевременно
  2. Индекс столбцы, на которых часто основаны ваши запросы
  3. Оптимизация дорогих столбцов, например добавление автоматически обновляемых значений года, месяца и дня (возможно, просто в виде строки), если и только если тесты показывают, что это обеспечивает значительное ускорение и только после использования того, что уже работает СЕЙЧАС, и определения того, что это t жизнеспособный.
...