В предыдущих статьях мы разобрали типичные проблемы с базой данных в Django, рассказали какие настройки нужно подкрутить в БД, научились находить и диагностировать "плохие" запросы. Теперь можно их исправить и получить заметное ускорение приложения.
Все хорошие запросы похожи друг на друга, каждый "плохой" запрос плох по своему
Исправление запросов можно превратить в чек-лист, который будет содержать 20% усилий дающих 80% результата. Начнем с него, а затем расшифруем методы исправления запросов.
Чек-лист исправления запроса
Исправление "плохого" запроса связано с поиском оптимального сочетания:
- Объем данных поднимаемого с диска/индекса
- Время чтения данных
- Время фильтрации данных
- Объем передаваемых данных на клиент
И влияя на один параметр, другие могут ухудшаться. Отлично запрашивать только необходимые данные, предвосхищая действия пользователя. Это улучшит отзывчивость интерфейса, но потребует чаще ходить в базу данных.
Тебе самостоятельно нужно подумать, что в твоей ситуации "оптимально", а следующие пункты помогут понять на что смотреть: