Какие из этих двух SQL-соединений будут работать лучше? - PullRequest
2 голосов
/ 02 сентября 2011

Мне всегда было любопытно, какой метод объединения SQL мне следует использовать.Следующие два запроса выполняют одну и ту же функцию, какая из двух лучше?

SELECT p.LastName, p.FirstName, o.OrderNo
FROM Persons p
INNER JOIN Orders o
ON p.P_Id = o.P_Id

SELECT p.LastName, p.FirstName, o.OrderNo
FROM Persons p, Orders o
WHERE p.P_Id = o.P_Id

В итоге, действительно ли использование слов INNER JOIN работает лучше, чем 'WHERE x = y'?

Ответы [ 2 ]

1 голос
/ 02 сентября 2011

Случай 1 - это стандартная версия ANSI, которая используется на сервере sql, а случай 2 - это синтаксис, который использовался ранее и является устаревшим. Пройдите через это

SELECT p.LastName, p.FirstName, o.OrderNo FROM Persons p INNER JOIN Orders o ON p.P_Id = o.P_Id  

SELECT p.LastName, p.FirstName, o.OrderNo FROM Persons p, Orders o WHERE p.P_Id = o.P_Id

Следовательно, производительность обоих запросов будет одинаковой

Обратите внимание, если ваш запрос был немного другим. т.е. * +1008 *

SELECT p.LastName, p.FirstName, o.OrderNo FROM Persons p LEFT JOIN Orders o ON p.P_Id = o.P_Id AND p.Id = 1

Vs

 SELECT p.LastName, p.FirstName, o.OrderNo FROM Persons p LEFT JOIN Orders o ON p.P_Id = o.P_Id WHERE p.Id = 1

В этом случае запрос будет работать совершенно иначе. Вывод обоих запросов будет разным.

Для понимания этого ... Смотрите это

1 голос
/ 02 сентября 2011

Это не имеет значения.Хорошая СУБД оптимизирует его для того же кода, по существу делая их одинаковыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...