Возможно ли добавить db_index = True к полю, которое не является уникальным (django)

У меня есть модель, которая имеет некоторые поля, такие как:

current_datetime = models.TimeField(auto_now_add=True)

new_datetime = models.DateTimeField(null=True, db_index=True)

и данные будут иметь вид :

currun_date_time = 2023-01-22T09:42:00+0330 new_datetime =2023-01-22T09:00:00+0330

currun_date_time = 2023-01-22T09:52:00+0330 new_datetime =2023-01-22T09:00:00+0330

currun_date_time = 2023-01-22T10:02:00+0330 new_datetime =2023-01-22T10:00:00+0330

возможно ли, чтобы new_datetime имел db_index = True ?

Причина, по которой мне нужен этот индекс - есть много строк (более 200,000 и продолжают добавляться каждый день) и есть место, где пользователь может выбрать диапазон дат и посмотреть результаты (это статистический сайт). Я хочу отправить запрос с этим отфильтрованным диапазоном дат, так что это должно быть сделано быстро. кстати, я использую postgresql

также если у вас есть советы по работе с данными или что-то подобное для таких сайтов, я был бы рад услышать

спасибо.

Да, можно сделать так, чтобы поле datetime было истинным. Это может повысить производительность запросов, которые сортируют или сортируют по данному полю.

Другими лучшими способами иметь индекс в поле datetime являются:

  • Для оценки плана запроса и обнаружения любых вялых процессов или отсутствующие индексы, воспользуйтесь командой "explain" вашей базы данных.
  • Используйте параметры "limit" и "offset" в своих запросах, чтобы получить только необходимые данные.
  • Для получения связанных данных одним запросом, а не многочисленных запросов, используйте методы "select_related" и "prefetch_related" в ваши запросы в Django.
  • Для хранения результатов сложных запросов и избежания выполнения одного и того же запроса несколько раз, используйте системы кэширования, такие как Redis или Memcached.
  • Кроме того, если строк слишком много, а данные не нужны в течение длительного периода времени, вы можете рассмотреть вопрос о хранении информацию в другую таблицу или базу данных.
Вернуться на верх