Вопросы к Поиску с Алисой
Разница между простыми и коррелированными подзапросами в SQL заключается в порядке выполнения. github.com ru.wikipedia.org
Простые подзапросы (независимые) не зависят от внешнего запроса. github.com Система выполняет такой подзапрос один раз перед выполнением внешнего запроса и позже использует полученное значение столько раз, сколько понадобится. sky.pro Простые подзапросы обрабатываются системой «снизу вверх»: сначала выполняется подзапрос самого нижнего уровня, а затем множество полученных значений используется при реализации подзапроса более высокого уровня и так далее. github.com ru.wikipedia.org
Коррелированные подзапросы (сложные) обращаются к полям внешнего запроса. sky.pro Система выполняет подзапрос для каждой строки, подставляя значение строки внешнего запроса как параметр подзапроса. sky.pro Коррелированные подзапросы обрабатываются системой в обратном порядке: сначала выбирается первая строка рабочей таблицы, сформированной основным запросом, и из неё выбираются значения тех столбцов, которые используются во вложенном подзапросе. github.com ru.wikipedia.org Если эти значения удовлетворяют условиям вложенного подзапроса, то выбранная строка включается в результат. github.com ru.wikipedia.org Затем выбирается вторая строка и так далее, пока в результат не будут включены все строки, удовлетворяющие вложенному подзапросу. github.com ru.wikipedia.org
Таким образом, простые подзапросы выполняются один раз, а коррелированные — для каждой строки внешнего запроса, что может замедлять выполнение всего запроса в целом. metanit.com