Correlated vs uncorrelated subquery?

Middle
390 просмотров
AFK Offer AI

Uncorrelated subquery — выполняется один раз, независимо от внешнего запроса. SELECT * FROM users WHERE salary > (SELECT AVG(salary) FROM users) — средняя зарплата вычисляется один раз. Correlated subquery — ссылается на столбцы внешнего запроса и выполняется для каждой строки. SELECT * FROM users u WHERE salary > (SELECT AVG(salary) FROM users WHERE department = u.department) — средняя считается для каждого отдела отдельно. Correlated медленнее, но иногда неизбежен. Часто можно переписать через JOIN или window function.

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

Задача: проверьте сбалансированность скобок в строке — (), [], {}