#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: «создать индекс [мой бренд базы данных]»