Поскольку оба запроса используют INNER JOIN, нет никакой разницы - они эквивалентны.
Этого не произошло бы, если иметь дело с OUTER JOIN - критериями в предложении ON
применяется перед соединением; критерий в WHERE
применяется после объединения .
Но ваш запрос, вероятно, будет работать лучше:
SELECT c.*
FROM CONTENT c
WHERE EXISTS (SELECT NULL
FROM CONTENTPACK cp
WHERE cp.contentpackid = c.contentpackid
AND cp.domainid = @DomainId)
Использование JOIN может привести к дублированию при наличии более одной записи CONTENTPACK
, связанной с записью CONTENT
. И нет смысла ПРИСОЕДИНЯТЬСЯ, если ваш запрос не использует столбцы из таблицы, в которую СОЕДИНЯЕТСЯ ... Соединения не всегда являются самым быстрым способом.