Встречается на собеседованиях • сегодня

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

Оптимизация запросов к БД включает несколько ключевых подходов:

  1. Индексация – создание индексов на часто используемых полях в WHERE, JOIN, ORDER BY.
    Пример:
    python
    # До
    User.objects.filter(name__startswith='A')  # Без индекса на name
    # После
    class User(models.Model):
        name = models.CharField(db_index=True)  # Добавляем индекс
  1. Оптимизация запросов – использование select_related и prefetch_related в Django для уменьшения количества запросов.

    python
    # Плохо: N+1 проблема
    users = User.objects.all()
    for user in users:
        print(user.profile.age)
    
    # Хорошо
    users = User.objects.select_related('profile').all()
  2. Денормализация – в некоторых случаях добавление избыточных данных для ускорения чтения.

  3. Кэширование – использование Redis/Memcached для хранения результатов тяжелых запросов.

  4. Анализ запросов – EXPLAIN в PostgreSQL или QuerySet.explain() в Django для понимания плана выполнения.

  5. Пакетная обработка – bulk_create, update вместо множества отдельных запросов.

  6. Оптимизация структуры БД – правильные типы данных, партиционирование.

Главное – измерять производительность до и после изменений!

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы