
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
03.07.2002, 11:24:02
|
|||
|---|---|---|---|
|
|||
Table1 INNER JOIN Table2 или Table1.ID = Table2.ID ??? |
|||
|
#18+
Уважаемые гуру. Даёт ли какие-либо преимущества использование синтаксиса T-SQL Table1 INNER JOIN Table2 ON Table1.ID = Table2.ID В сравнении с указанием объединения таблиц с использованием старого стиля - WHERE Table1.ID = Table2.ID Заранее благодарен, Александр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2002, 11:30:59
|
|||
|---|---|---|---|
|
|||
Table1 INNER JOIN Table2 или Table1.ID = Table2.ID ??? |
|||
|
#18+
Сравнивал планы выполнения запросов - они одинаковые, Да и теоретически различий не должно быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2002, 11:41:39
|
|||
|---|---|---|---|
Table1 INNER JOIN Table2 или Table1.ID = Table2.ID ??? |
|||
|
#18+
В некоторых местах(организациях) использование JOIN считается хорошим тоном ... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2002, 11:44:53
|
|||
|---|---|---|---|
|
|||
Table1 INNER JOIN Table2 или Table1.ID = Table2.ID ??? |
|||
|
#18+
Сервер в случае использования JOIN организует связывание данных, тогда как при использовании WHERE происходит их фильтрация. При выполнении простых небольших запросов это не играет большого значения, но при построении сложных запросов, выполняющих обработку тысяч строк, все же лучше использовать JOIN ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2002, 11:45:46
|
|||
|---|---|---|---|
Table1 INNER JOIN Table2 или Table1.ID = Table2.ID ??? |
|||
|
#18+
Никакой разницы нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2002, 12:02:29
|
|||
|---|---|---|---|
|
|||
Table1 INNER JOIN Table2 или Table1.ID = Table2.ID ??? |
|||
|
#18+
Разница есть, и на больших объемах довольно ощутимая. Я год назад чуть не уписялся от радость (пардон :)), когда в уже эксплуатировавшейся SP заменил WHERE на JOIN - скорость возросла порядка в 3-4 раза! На эффективность повлияла еще и особенность запроса (довольно большое кол-во задействованных таблиц). Но в любом случае, стоит применять JOIN вместо WHERE. Где-то вычитал, что при JOIN оптимизация происходит на этапе построения плана запроса , а при WHERE - как заметил Bob - происходит фильтрация в процессе выполнения запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2002, 12:08:14
|
|||
|---|---|---|---|
Table1 INNER JOIN Table2 или Table1.ID = Table2.ID ??? |
|||
|
#18+
Незнаю наверняка, но я вычитал это в одной книге. (что то вроде, что услови WHERE переместилось на ON x=y) Об увеличении скорости что-то не верится, надо сравнивать, как были написаны запросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2002, 12:42:58
|
|||
|---|---|---|---|
|
|||
Table1 INNER JOIN Table2 или Table1.ID = Table2.ID ??? |
|||
|
#18+
Люди, о чем вы? Конечно, по теории WHERE Table1.ID = Table2.ID SQL Server должен отрабатывать построением декартового произведения таблиц с последующей фильтрацией по условию WHERE. И это, конечно, будет намного дороже, чем INNER JOIN. Но на практике он так никогда не делает, строя план, эквивалентный JOIN'у. Как при одинаковых планах скорость выполнения может отличаться в разы, я не понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2002, 13:58:02
|
|||
|---|---|---|---|
Table1 INNER JOIN Table2 или Table1.ID = Table2.ID ??? |
|||
|
#18+
Делаем тест: 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. Вот и ответ. Просто происходит замена неявного джоина на явный - ну так удобнее системе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=46&mobile=1&tid=1822037]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 352ms |

| 0 / 0 |
