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

Как ускорить SQL запрос

Оптимизация SQL запросов в Python зависит от СУБД, но есть универсальные подходы:

  1. Индексы – убедитесь, что запрос использует индексы для колонок в WHERE/JOIN:
python
# Для SQLAlchemy
session.query(User).filter(User.name == 'John').all()  # name должен быть проиндексирован
  1. LIMIT/OFFSET – вместо полной выборки используйте пагинацию:
python
session.query(User).limit(100).offset(200).all()
  1. JOIN вместо подзапросов – подзапросы часто медленнее:
python
# Плохо
subq = session.query(Order.user_id).filter(Order.price > 100)
session.query(User).filter(User.id.in_(subq)).all()

# Лучше
session.query(User).join(Order).filter(Order.price > 100).all()
  1. EXPLAIN – анализируйте план выполнения запроса:
python
# PostgreSQL пример
result = session.execute("EXPLAIN ANALYZE SELECT * FROM users")
print(result.fetchall())
  1. Кэширование – используйте Redis/memcached для часто повторяющихся запросов.

  2. Материализованные представления – для сложных агрегаций.

  3. Оптимизация ORM – избегайте N+1 проблемы с .joinedload() в SQLAlchemy:

python
session.query(User).options(joinedload(User.orders)).all()

Для больших таблиц также помогает партиционирование и шардинг данных.

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

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

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

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