Расскажи про опыт работы с сложными запросами

Python Middle Без компании
Расскажи про опыт работы с сложными запросами
Ответы
Работал с оптимизацией SQL-запросов в Django ORM и сырыми SQL для сложных аналитических отчетов. Основные подходы: - **Оптимизация ORM**: ``` from django.db.models import Count, Sum queryset = Order.objects.annotate( total_items=Count('items'), total_price=Sum('items__price') ) ``` - Использовал `select_related` и `prefetch_related` для уменьшения числа запросов. - Применя `annotate` и `aggregate` для вычислений на стороне БД. - **Сырые SQL**: ``` from django.db import connection with connection.cursor() as cursor: cursor.execute(""" SELECT user_id, SUM(amount) OVER (PARTITION BY user_id) FROM transactions """) ``` - Для оконных функций и сложных джойнов использовал `cursor.execute` или `RawSQL`. - **Индексы и EXPLAIN**: - Анализировал планы запросов через `EXPLAIN ANALYZE`, добавлял индексы для ускорения. - **NoSQL**: - Работал с агрегациями в MongoDB (например, `$group`, `$lookup`). Кейс: оптимизировал отчет с 10+ джойнами, сократив время выполнения с 15 сек до 500 мс через переписывание запроса и добавление составных индексов.