Встречается на 1% собеседований по Python
Как ускорить зависающий 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
интервью вопросы и ответы