Преобразование 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.
В результате такого преобразования исключается внешняя ссылка и запрос отрабатывается значительно быстрей.