В серверной части MySQL Django преобразует filter(date__year=2011)
в ... WHERE date BETWEEN 2011-01-01 00:00:00 and 2011-12-31 23:59:59.99
в SQL, для выполнения которого требуется 3 секунды.Если я вручную удаляю часть времени и запускаю ее как ... WHERE date BETWEEN 2011-01-01 and 2011-12-31
, время выполнения падает на 1/100–30 мсек.
Кажется, что существует фундаментальная проблема с интерпретацией запросов диапазона дат.Есть идеи, чтобы обойти это?
Если я не могу найти способ использования Django ORM, я добавлю дополнительное поле года в модель, чтобы сохранить год и выполнить запрос в этом поле целого года.
Спасибоваше время.
ps: Для ограничений, не зависящих от меня, среда Django 1.1.Это может быть исправлено или лучше оптимизировано в новых версиях Django.