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

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

  1. Оптимизация запроса: Проверить и переписать запрос, добавить индексы на часто используемые поля, избегать SELECT *, использовать EXPLAIN для анализа.
sql
CREATE INDEX idx_user_email ON users(email);
  1. Кэширование: Использовать Redis или Memcached для хранения результатов частых запросов.
python
from django.core.cache import cache
data = cache.get('slow_query_result')
if not data:
    data = MyModel.objects.filter(...).all()
    cache.set('slow_query_result', data, 60*10)
  1. Пагинация: Разбивать данные на страницы с LIMIT/OFFSET или keyset-пагинацией.
python
from django.core.paginator import Paginator
paginator = Paginator(queryset, 25)
page = paginator.page(1)
  1. Асинхронные запросы: Использовать async/await с поддержкой асинхронных драйверов БД (например, asyncpg для PostgreSQL).

  2. Денормализация: Иногда дублирование данных ускоряет чтение за счёт записи.

  3. Шардинг/репликация: Распределить нагрузку между несколькими серверами БД.

  4. Materialized Views: Предварительно агрегированные данные для сложных запросов.

  5. Оптимизация ORM: В Django использовать select_related(), prefetch_related(), избегать N+1 проблем.

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

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

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

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