2 fed
Думаю, что ваше замечание относится к запросу такого вида
X++:
select a
exists join b where a.parm1 == parm1 && a.filed1 == b.field1
Если посмотреть на запрос, отправляемый на сервет, то увидим вот что
X++:
select *
from a
where exists(select 'x' from b where a.parm1 = parm1 and a.field1 = b.field1)
(Я опустил фильтр по компании (dataAreaId). В данном случае это не существенно)
Т.е. при таком запросе условие a.parm1 == parm1 накладывается не на таблицу A, а на связь таблицы A и таблицы B. Будут выбраны
все записи для таблицы A и для каждой из них будет вызван внутренний селект. С точки зрения логики запросы будет идентичны - в обоих случаях получаем идентичный набор записей
Кстати, замечание Raven Melancholic - как раз для такого типа запросов.
Это же относится и к notexists join запросам.
Для простого join'а будет генерировать такой запрос
X++:
select *
from a, b
where (a.dataareaid = 'EXT') and ((b.adataareaid = 'EXT') and ((a.parm1=parm1) and (a.field1=b.field1)))
Оптимизатор что MS SQL, что Oracle нормально обрабатывает такие запросы.