Оптимизация запросов Django

#django #django-models #django-queryset

#джанго #django-модели #django-набор запросов

Вопрос:

У меня есть модель с большим количеством записей (более 12 513 262), и предполагается, что они будут увеличиваться в геометрической прогрессии. Но проблема связана с этим большим количеством записей. запрос записей занимает много времени, есть ли способ повысить производительность с помощью индексов и т. Д.

Мой запрос выглядит следующим образом:

 MyModel.objects.all().order_by('-timestamp')[0:50]
 

и на его выполнение уходит много времени.

Комментарии:

1. извините, как называется модель? просто любопытно.

2. @Glycerine, конечно! Теперь я понимаю, почему около 12513262 записей 😉

Ответ №1:

есть ли у вас индекс в поле метки времени?

если вы используете south (для миграции базы данных, вам обязательно следует изучить его, если вы еще этого не сделали), вы можете просто добавить db_index=True в свое поле и перенести. В противном случае вы можете запустить

 ./manage.py sqlindexes MyApp
 

чтобы показать инструкцию sql, добавляющую индекс. (который вам нужно запустить вручную, например, с помощью

 ./manage.py dbshell
 

Комментарии:

1. у меня пока нет индекса, могу ли я создать его сейчас, если да, как это сделать?

2. Если вы не используете South, вам нужно будет создать индекс вручную с помощью соответствующего SQL. Это будет зависеть от того, какую базу данных вы используете. Спросите Google: «создать индекс [мой бренд базы данных]»