Коммутативность внутреннего соединения
Я прочитал из этого ответа (клик) следующие условные высказывания
Invoices.CustomerID=Customers.CustomerID
а также
Customers.CustomerID=Invoices.CustomerID
идентичны, потому что он дает тот же набор результатов.
Теперь моя проблема связана с коммутативностью внутреннего соединения. Я попробовал оба из следующих подходов, и они дают одинаковый набор результатов (за исключением порядка столбцов).
Customers
стол первый
use MMABooks
select *
from Customers
inner join Invoices
on Invoices.CustomerID=Customers.CustomerID
where Customers.CustomerID=10
Invoices
стол первый
use MMABooks
select *
from Invoices
inner join Customers
on Invoices.CustomerID=Customers.CustomerID
where Invoices.CustomerID=10
Вопросы
- Является ли внутреннее соединение коммутативным по замыслу?
- Есть ли лучшая практика, которая предлагает или предпочитает один подход по сравнению с другим? Я имею в виду, какой подход я должен использовать?
1 ответ
Решение
Было бы очень странно, если бы они не дали такой же результат. Вы ожидали разницу?
Лучше всего начинать с таблицы, из которой вы выбираете большинство столбцов.
Вам нужно беспокоиться о заказе, когда вы работаете с LEFT
или же RIGHT JOINS
,