2016-03-01 3 views
1
create table Employee(

id int identity(1,1) primary key, 
Username varchar(50), 
FirstName varchar(50), 
LastName varchar(50), 
DepartID int 

) 
create table Departments(

id int identity(1,1) primary key, 
DepartmentName varchar(50) 

) 

Оба набора результатов совпадают, мы получаем совпадение сотрудников и несоответствие.Does Join Order matter performance

Select * from Employee E 
Left Join 
Departments D 
ON D.ID= E.DepartID 

Select * from Departments D 
Right Join Employee E 
ON E.DepartID =D.ID 
+0

Поскольку 'LEFT b' является таким же, как' b RIGHT a', не должно быть разницы. – dnoeth

+1

Используемые теги dbms. Вопросы производительности почти всегда зависят от продукта! – jarlh

ответ

1

Оба ваши запроса действительно полностью взаимозаменяемы. И не должно быть никакой разницы в производительности и результатах.

Большинство людей используют только LEFT JOIN, так как это кажется более интуитивно понятным, и это универсальный синтаксис - я не думаю, что вся поддержка RDBMS RIGHT JOIN. Не все СУБД поддерживают SQL. Например, SQLite 3 не реализует RIGHT и FULL OUTER JOIN.