Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад

Что выбрать: JOIN или подзапрос?

Вопрос проверяет понимание разницы между JOIN и подзапросами в SQL, а также умение выбирать оптимальный подход для производительности и читаемости запросов.

Короткий ответ

JOIN и подзапросы могут давать одинаковый результат, но JOIN обычно быстрее, так как база данных может оптимизировать его эффективнее. Подзапросы удобны для простых условий или агрегации, но могут выполняться медленнее на больших данных. Выбор зависит от задачи: JOIN лучше для связей таблиц, подзапрос — для фильтрации по агрегированным значениям.

Длинный ответ

Разница между JOIN и подзапросом

JOIN и подзапросы — два способа объединить данные из нескольких таблиц в SQL. JOIN физически соединяет строки таблиц по условию, создавая временную таблицу. Подзапрос — это вложенный запрос, результат которого используется во внешнем запросе, например, в WHERE или FROM.

Производительность

Современные СУБД часто оптимизируют подзапросы до JOIN, но не всегда. JOIN обычно выполняется быстрее, так как позволяет базе данных использовать индексы и более эффективные алгоритмы соединения. Подзапросы могут выполняться для каждой строки внешнего запроса, что замедляет работу на больших объёмах данных.

Примеры кода

Найдём сотрудников, чья зарплата выше средней:

-- Подзапрос
SELECT name FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);

-- JOIN (с агрегацией)
SELECT e.name FROM employees e
JOIN (SELECT AVG(salary) AS avg_sal FROM employees) avg_t
  ON e.salary > avg_t.avg_sal;

Оба запроса дают одинаковый результат, но JOIN может быть эффективнее, если средняя зарплата вычисляется один раз.

Когда что использовать

  • JOIN — когда нужно объединить строки из нескольких таблиц по ключу, особенно если таблицы большие и есть индексы.
  • Подзапрос — для простых условий, например, проверки существования (EXISTS) или сравнения с агрегированным значением, когда читаемость важнее производительности.

Вывод: В большинстве случаев JOIN предпочтительнее для производительности, но подзапросы удобны для простых фильтров. Тестируйте оба варианта на реальных данных, чтобы выбрать оптимальный.

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • SQL

Ключевые слова

#SQL

#JOIN

#subquery

#query optimization

#performance

Подпишись на Java Developer в телеграм