Я видел это сам.
Я могу предположить, что EXISTS лучше в предложении WHERE, потому что он дает полусоединение, основанное на множестве, и именно то, что вам нужно.
В случае IF это не ясно оптимизатору. То есть полусоединения тоже нечего. Надеюсь, это должно быть то же самое (плохо):
SELECT 1 WHERE EXISTS (SELECT I.InsuranceID
FROM Insurance I
INNER JOIN JobDetail JD ON I.AccountID = JD.AccountID
WHERE I.InsuranceLookupID IS NULL
AND JD.JobID = 28)
Вы могли бы к этому, хотя
SELECT SIGN(COUNT(*))
FROM Insurance I
INNER JOIN JobDetail JD ON I.AccountID = JD.AccountID
WHERE I.InsuranceLookupID IS NULL
AND JD.JobID = 28
Оптимизируется при некоторых обстоятельствах:
Что лучше проверить, если элемент существует или нет: Выберите Количество (ID) ИЛИ Существуйте (...)?
Не уверен, что смущает оптимизатор ...