Нужно выбрать пользователей, у которых есть хотя бы один заказ суммой > 5000₽. Таблица orders содержит 100М строк. Что работает быстрее: WHERE EXISTS (SELECT 1 FROM orders ...) или WHERE user_id IN (SELECT user_id FROM orders WHERE ...)?
SQLhardsenior
Проверяет владение SQL: выборки, агрегации, JOIN-ы и оконные функции.
quiz-banksqlexistsperformancenull-safety
Варианты ответа
IN всегда быстрее EXISTS, так как оптимизатор материализует результат подзапроса один раз в hash-таблицу и потом делает O(1) lookup — это существенное преимущество на больших таблицах
Разницы нет ни в одной из современных СУБД: IN и EXISTS оптимизатором приводятся к идентичному плану выполнения, поэтому выбор между ними определяется только стилистическими предпочтениями
На современных оптимизаторах (PostgreSQL 12+, MySQL 8+) разница минимальная — оба разворачиваются в semi-join. На старых БД EXISTS чаще быстрее, т.к. останавливается на первой найденной строке
EXISTS всегда быстрее IN, потому что SQL-парсер специально оптимизирует эту конструкцию: останавливается на первом найденном совпадении и не читает остаток таблицы — классика performance-tuning
Как разобрать этот вопрос на собеседовании
Начни с разбора схемы: какие таблицы и ключи участвуют, где могут быть NULL и дубли строк. Затем реши, что важнее — JOIN, агрегация с GROUP BY/HAVING, оконная функция или подзапрос. На собеседовании ценят не только правильный результат, но и умение проговорить план запроса и крайние случаи (пустые группы, деление на ноль, фан-аут при JOIN).
Это вопрос продвинутого уровня — на собеседовании по нему обычно идут уточняющие follow-up вопросы, поэтому держи в голове крайние случаи и альтернативные решения.
Тема вопроса — «SQL». Чтобы подготовиться к похожим задачам, отрабатывай их на практике: sql-тренажёр помогает довести навык до автоматизма, а раздел вопросов — увидеть формулировки, которые реально встречаются на интервью аналитика данных.
Разбор ответа
Подробный разбор с объяснением «почему правильный ответ верный» и почему остальные неверны — после регистрации.
3000+ вопросов с разбором, quiz-режим с проверкой, AI-собес и подготовка к интервью аналитика.