Назад к задачам
Junior — Senior
8

Порядок применения фильтров и соединений в SQL‑запросе и возникновение декартового произведения

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

В запросе к базе данных применяется оператор JOIN для объединения таблиц table1 и table2, а также условие WHERE для отбора нужных записей.

  1. Какой этап происходит первым: применение условия WHERE или выполнение соединения JOIN?
  2. По какой причине при использовании JOIN может получаться декартово произведение, когда каждая строка первой таблицы соединяется со всеми строками второй?
  3. Какие приёмы позволяют предотвратить появление декартового произведения при объединении таблиц?
SELECT * FROM table1 AS t1
JOIN table2 AS t2 ON t1.id = t2.key_id
WHERE t1.id > 100;