Доступные версии документации

Преобразование EXISTS в IN

Преобразование SQL-запроса, содержащего оператор EXISTS, в запрос с оператором IN происходит в том случае, когда связка между внутренним и внешним запросами идет через один предикат.

Например,

Исходная конструкция               Оптимизированная конструкция
----------------------------------------------------------------------
SELECT CLIST1 FROM TLIST1          SELECT CLIST1 FROM TLIST1
WHERE COND1 AND EXISTS             WHERE COND1 AND T1.C1 IN
(SELECT CLIST2 FROM TLIST2 WHERE   (SELECT T2.C2 FROM T2 WHERE COND2);
T1.C1=T2.C2 and COND2);

где T1 входит в TLIST1, T2 в TLIST2 и COND2 не содержит обращений к T1.

В результате такого преобразования исключается внешняя ссылка и запрос отрабатывается значительно быстрей.

Заметили ошибку?
Выделите текст и нажмите Ctrl + Enter