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

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

Работал с оптимизацией SQL-запросов в Django ORM и сырыми SQL для сложных аналитических отчетов. Основные подходы:

  1. Оптимизация ORM:
    • Использовал select_related и prefetch_related для уменьшения числа запросов.
    • Применя annotate и aggregate для вычислений на стороне БД.
    python
    from django.db.models import Count, Sum
    queryset = Order.objects.annotate(
        total_items=Count('items'),
        total_price=Sum('items__price')
    )
  1. Сырые SQL:

    • Для оконных функций и сложных джойнов использовал cursor.execute или RawSQL.
    python
    from django.db import connection
    with connection.cursor() as cursor:
        cursor.execute("""
            SELECT user_id, SUM(amount) OVER (PARTITION BY user_id) 
            FROM transactions
        """)
  2. Индексы и EXPLAIN:

    • Анализировал планы запросов через EXPLAIN ANALYZE, добавлял индексы для ускорения.
  3. NoSQL:

    • Работал с агрегациями в MongoDB (например, $group, $lookup).

Кейс: оптимизировал отчет с 10+ джойнами, сократив время выполнения с 15 сек до 500 мс через переписывание запроса и добавление составных индексов.

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

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

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

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