Первый синтаксис (как вы указали) представляет собой перекрестное соединение или декартово произведение двух таблиц. В системе без оптимизатора (или с плохим оптимизатором) это создаст комбинацию каждой записи в первой таблице в сочетании с каждой записью во второй таблице, а затем отфильтрует их до тех, которые соответствуют предложению WHERE.
Вывод обоих операторов будет одинаковым, и если используемая вами система имеет хороший оптимизатор, производительность также будет одинаковой.
Два комментария, которые я хотел бы предложить:
1) Я считаю, что при написании заявлений лучше четко указать свои намерения. Если вы намеревались выполнить INNER JOIN, используйте синтаксис INNER JOIN. Будущие вы 6 месяцев форме теперь будете благодарны.
2) Оптимизатор в SQL Server выполнит ВНУТРЕННЕЕ СОЕДИНЕНИЕ в этой ситуации (по крайней мере, последние версии, не может гарантировать все версии), но насколько хорошо он угадывает этот путь, зависит от версии механизма SQL Server и не гарантируется, что он останется прежним в будущем (сомневаюсь, что он изменится в этой ситуации, но действительно ли так высока стоимость ввода еще нескольких символов?)
person
Tarwn
schedule
03.05.2011
CROSS JOIN
. Оба запросаINNER JOIN
s. - person ypercubeᵀᴹ   schedule 04.05.2011