Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Table1 INNER JOIN Table2 или Table1.ID = Table2.ID ??? / 9 сообщений из 9, страница 1 из 1
03.07.2002, 11:24:02
    #32034892
Alex Mey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Table1 INNER JOIN Table2 или Table1.ID = Table2.ID ???
Уважаемые гуру.

Даёт ли какие-либо преимущества использование синтаксиса T-SQL

Table1 INNER JOIN Table2 ON Table1.ID = Table2.ID

В сравнении с указанием объединения таблиц с использованием старого стиля -

WHERE Table1.ID = Table2.ID

Заранее благодарен, Александр.
...
Рейтинг: 0 / 0
03.07.2002, 11:30:59
    #32034893
Ignat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Table1 INNER JOIN Table2 или Table1.ID = Table2.ID ???
Сравнивал планы выполнения запросов - они одинаковые, Да и теоретически различий не должно быть.
...
Рейтинг: 0 / 0
03.07.2002, 11:41:39
    #32034895
Sanek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Table1 INNER JOIN Table2 или Table1.ID = Table2.ID ???
В некоторых местах(организациях) использование JOIN считается хорошим тоном ... :)
...
Рейтинг: 0 / 0
03.07.2002, 11:44:53
    #32034897
Bob
Bob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Table1 INNER JOIN Table2 или Table1.ID = Table2.ID ???
Сервер в случае использования JOIN организует связывание данных, тогда как при использовании WHERE происходит их фильтрация. При выполнении простых небольших запросов это не играет большого значения, но при построении сложных запросов, выполняющих обработку тысяч строк, все же лучше использовать JOIN
...
Рейтинг: 0 / 0
03.07.2002, 11:45:46
    #32034899
Rom
Rom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Table1 INNER JOIN Table2 или Table1.ID = Table2.ID ???
Никакой разницы нет
...
Рейтинг: 0 / 0
03.07.2002, 12:02:29
    #32034903
AnKa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Table1 INNER JOIN Table2 или Table1.ID = Table2.ID ???
Разница есть, и на больших объемах довольно ощутимая. Я год назад чуть не уписялся от радость (пардон :)), когда в уже эксплуатировавшейся SP заменил WHERE на JOIN - скорость возросла порядка в 3-4 раза! На эффективность повлияла еще и особенность запроса (довольно большое кол-во задействованных таблиц). Но в любом случае, стоит применять JOIN вместо WHERE. Где-то вычитал, что при JOIN оптимизация происходит на этапе построения плана запроса , а при WHERE - как заметил Bob - происходит фильтрация в процессе выполнения запроса.
...
Рейтинг: 0 / 0
03.07.2002, 12:08:14
    #32034904
Rom
Rom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Table1 INNER JOIN Table2 или Table1.ID = Table2.ID ???
Незнаю наверняка, но я вычитал это в одной книге.
(что то вроде, что услови WHERE переместилось на ON x=y)
Об увеличении скорости что-то не верится, надо сравнивать, как были написаны запросы.
...
Рейтинг: 0 / 0
03.07.2002, 12:42:58
    #32034914
Дед Маздай
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Table1 INNER JOIN Table2 или Table1.ID = Table2.ID ???
Люди, о чем вы? Конечно, по теории WHERE Table1.ID = Table2.ID SQL Server должен отрабатывать построением декартового произведения таблиц с последующей фильтрацией по условию WHERE. И это, конечно, будет намного дороже, чем INNER JOIN. Но на практике он так никогда не делает, строя план, эквивалентный JOIN'у. Как при одинаковых планах скорость выполнения может отличаться в разы, я не понимаю.
...
Рейтинг: 0 / 0
03.07.2002, 13:58:02
    #32034934
IgorK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Table1 INNER JOIN Table2 или Table1.ID = Table2.ID ???
Делаем тест:
Q1: select pr.n_base, dpr.namkr from
pred pr inner join doppred dpr on pr.n_base=dpr.n_base
Q2: select pr.n_base, dpr.namkr from pred pr, doppred dpr
where pr.n_base=dpr.n_base

В обоих случаях плат одинаковый, время выполнения тоже. Смотрим план, и что видим? В обоих случаях Logical Operation: inner join. Вот и ответ. Просто происходит замена неявного джоина на явный - ну так удобнее системе.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Table1 INNER JOIN Table2 или Table1.ID = Table2.ID ??? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]