Во-первых, ваш синтаксис, вероятно, неправильный. Таким образом, эти два формата будут выглядеть так:
Select ...
From X
Where Exists( Select 1 From Y Where Idx = Y.SomeColumn )
Or Exists( Select 1 From Y Idy = Y.SomeColumn )
И
With XX As
(
Select ...
From Y
)
Select ...
From X
Where Exists ( Select 1 From XX Where Idx = XX.SomeColumn )
Or Exists ( Select 1 From XX Where Idy = XX.SomeColumn )
Обратите внимание на операторы Exists.Они не Where Col Exists(...
, а просто Where Exists( ...
.
Во-вторых, эффективность и скорость будут зависеть от данных, статистики, индексов и, в конце концов, от того, что оптимизатор сможетсделать более эффективным.Таким образом, вам действительно нужно посмотреть на план выполнения, чтобы узнать, что быстрее.Теперь другая форма может быть:
Select ...
From X
Where Exists (
Select 1
From Y
Where Idx = Y.SomeColumn
Union All
Select 1
From Y
Where Idy = Y.SomeColumn
)