Встречается на собеседованиях • сегодня
Как ускорить зависающий SQL-запрос
Оптимизация SQL-запросов в Python требует анализа и доработки на нескольких уровнях:
- Индексы - убедитесь, что запрос использует индексы для JOIN, WHERE и ORDER BY:
python
# Для Django ORM
Model.objects.filter(some_field=value).explain() # проверить использование индексов- Оптимизация запроса:
- Избегайте SELECT * - выбирайте только нужные поля
- Используйте LIMIT для тестирования
- Замените подзапросы на JOIN
- Кэширование:
python
from django.core.cache import cache
def get_data():
key = 'expensive_query'
result = cache.get(key)
if not result:
result = list(MyModel.objects.filter(...)) # тяжелый запрос
cache.set(key, result, timeout=3600)
return result-
Денормализация - иногда стоит добавить избыточные данные для ускорения выборок
-
Профилирование:
python
# Для PostgreSQL
from django.db import connection
with connection.cursor() as cursor:
cursor.execute("EXPLAIN ANALYZE SELECT * FROM my_table")
print(cursor.fetchall())Для сложных случаев рассмотрите использование материализованных представлений или выделенных сервисов обработки данных.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы