Разница B / W, WHERE и ON в SQL присоединиться к операции - PullRequest
0 голосов
/ 17 февраля 2020

Вот мой тестовый код для объяснения

create table Test3(id integer, name varchar(100));
insert into Test3(id, name) values(1, "Vijay");
insert into Test3(id, name) values(2, "Sandy");
insert into Test3(id, name) values(3, "Rohit");
create table Test4(id integer, surname varchar(100));
insert into Test4(id, surname) values(1, "karma");
insert into Test4(id, surname) values(2, "sharma");

Вот мои запросы:

select Test3.id , Test3.name , Test4.surname from Test3,Test4 where Test3.id = Test4.id;
select Test3.id , Test3.name , Test4.surname from Test3 join Test4 on Test3.id = Test4.id;

Оба вышеприведенных оператора запроса привели к тому же, как показано ниже:

1 Виджай карма

2 Песчаная шарма

В чем разница между внутренними запросами и какой из них более эффективен?

Ответы [ 2 ]

4 голосов
/ 17 февраля 2020

Эти два запроса функционально эквивалентны.

Один использует неявные объединения старой школы (с запятой в предложении from), другой использует явные объединения (с ключевым словом on).

Хотя оба запроса гарантированно дают одинаковые результаты (и, вероятно, будут иметь одинаковую производительность), я настоятельно рекомендую использовать явный синтаксис объединения. Неявные объединения потеряли популярность десятилетия go (это было ANSI 92 дня) по многим причинам, особенно потому, что им труднее следовать (логика c распределена между предложением from и where пункт), и не может быть легко преобразован в left join.

0 голосов
/ 17 февраля 2020

Производительность будет одинаковой в обоих случаях.

Выбор из нескольких таблиц без объединения - не что иное, как перекрестное соединение. Когда вы помещаете в него предложение where, запрос выполняет внутреннее соединение.

...