Разница между простыми и коррелированными подзапросами в SQL заключается в порядке выполнения. 12
Простые подзапросы (независимые) не зависят от внешнего запроса. 1 Система выполняет такой подзапрос один раз перед выполнением внешнего запроса и позже использует полученное значение столько раз, сколько понадобится. 3 Простые подзапросы обрабатываются системой «снизу вверх»: сначала выполняется подзапрос самого нижнего уровня, а затем множество полученных значений используется при реализации подзапроса более высокого уровня и так далее. 12
Коррелированные подзапросы (сложные) обращаются к полям внешнего запроса. 3 Система выполняет подзапрос для каждой строки, подставляя значение строки внешнего запроса как параметр подзапроса. 3 Коррелированные подзапросы обрабатываются системой в обратном порядке: сначала выбирается первая строка рабочей таблицы, сформированной основным запросом, и из неё выбираются значения тех столбцов, которые используются во вложенном подзапросе. 12 Если эти значения удовлетворяют условиям вложенного подзапроса, то выбранная строка включается в результат. 12 Затем выбирается вторая строка и так далее, пока в результат не будут включены все строки, удовлетворяющие вложенному подзапросу. 12
Таким образом, простые подзапросы выполняются один раз, а коррелированные — для каждой строки внешнего запроса, что может замедлять выполнение всего запроса в целом. 4