Какие подходы применял при оптимизации запросов к БД

Python Middle Без компании
Какие подходы применял при оптимизации запросов к БД
Ответы
Оптимизация запросов к БД включает несколько ключевых подходов: - **Индексация** – создание индексов на часто используемых полях в WHERE, JOIN, ORDER BY. Пример: ``` # До User.objects.filter(name__startswith='A') # Без индекса на name # После class User(models.Model): name = models.CharField(db_index=True) # Добавляем индекс ``` - **Оптимизация запросов** – использование `select_related` и `prefetch_related` в Django для уменьшения количества запросов. ``` # Плохо: N+1 проблема users = User.objects.all() for user in users: print(user.profile.age) # Хорошо users = User.objects.select_related('profile').all() ``` - **Денормализация** – в некоторых случаях добавление избыточных данных для ускорения чтения. - **Кэширование** – использование Redis/Memcached для хранения результатов тяжелых запросов. - **Анализ запросов** – EXPLAIN в PostgreSQL или QuerySet.explain() в Django для понимания плана выполнения. - **Пакетная обработка** – bulk_create, update вместо множества отдельных запросов. - **Оптимизация структуры БД** – правильные типы данных, партиционирование. Главное – измерять производительность до и после изменений!