Какая разница между двумя TSQL Joins?

Мне интересно, какая разница между следующими запросами (с использованием двух разных синтаксисов соединений). Я видел это в некотором коде, который был унаследован, и мне было любопытно, если результат всегда один и тот же. И если нет, почему вы будете использовать один над другим.

ЗапроС# 1 Пример:

SELECT * FROM TableA a
 INNER JOIN TableB b
 INNER JOIN TableC c
 ON b.TableBId = c.TableCId
 ON b.TableBId = a.TableAId

ЗапроС# 2 Пример:

SELECT * FROM TableA a
 INNER JOIN TableB b
 ON b.TableBId = a.TableAId
 INNER JOIN TableC c
 ON b.TableBId = c.TableCId
3 ответа

Как уже было сказано, вы можете просмотреть планы выполнения, чтобы убедиться, что это действительно одни и те же запросы. Я почти уверен, что они есть, хотя

Подробнее о вашем вопросе о том, почему вы выбрали один из них. Я бы сказал, что это сводится к предпочтениям стиля. В большинстве случаев вы увидите запрос №2, потому что он имеет более четкое определение для будущих читателей. Если вы создаете действительно сложный запрос, то выигрыш, который вы получаете, растет чрезвычайно.

Я не могу не ручаться за другой подход, поскольку я действительно считаю, что он становится слишком нечитаемым и никогда не должен использоваться. Опять же, это мое мнение, и рассуждения сводятся к мнениям/стилям.

Однако, стандартный способ - query2, поэтому я бы придерживался этого:)... но опять же, только я


Планы выполнения вашего запроса точно такие же.


Попробуйте просмотреть план выполнения. Это, скорее всего, будет точно таким же.

licensed under cc by-sa 3.0 with attribution.