Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Что лучше?  [new]
BSISoft
Member

Откуда: Москва
Сообщений: 383
Ответьте пожалуйста на вопрос, поскольку у меня сложилось неодназначное мнение.
Какой из этих запросов на практике работает лучше?
SELECT * FROM t1, t2 WHERE t1.[ID] = t2.[REFID]
или
SELECT * FROM t1 INNER JOIN t2 ON t1.[ID] = t2.[REFID]
16 авг 05, 11:14    [1789134]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше?  [new]
Berg
Member

Откуда: Кр-ск
Сообщений: 3480
Оба этих запроса офигенно хороши!!!
16 авг 05, 11:15    [1789145]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
На практике оба запроса должн работать совершенно одинаково. Во всяком случае, можно посравнивать план.
16 авг 05, 11:15    [1789147]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше?  [new]
BSISoft
Member

Откуда: Москва
Сообщений: 383
Berg
Оба этих запроса офигенно хороши!!!

Это конечно хорошо, но такое заключение в их пользу чем потверждается?
16 авг 05, 11:18    [1789173]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
BSISoft
Berg
Оба этих запроса офигенно хороши!!!

Это конечно хорошо, но такое заключение в их пользу чем потверждается?

https://www.sql.ru/forum/actualthread.aspx?tid=208553#1789147
16 авг 05, 11:19    [1789177]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
BSISoft
Berg
Оба этих запроса офигенно хороши!!!

Это конечно хорошо, но такое заключение в их пользу чем потверждается?

Лучше скажите, на основе чего у Вас сложилось неоднозначное мнение?
16 авг 05, 11:19    [1789179]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше?  [new]
Berg
Member

Откуда: Кр-ск
Сообщений: 3480
BSISoft
Berg
Оба этих запроса офигенно хороши!!!

Это конечно хорошо, но такое заключение в их пользу чем потверждается?


Вначале расскажите что такое хорошо, а что такое плохо для вас.
Если "по существу", то tpg вам уже ответил.

Запрос1 имеет стандартный ANSI-SQL синтаксис, а запрос2 - синтакиси T-SQL.
Разницы в скорости выполнения между ними нет.
16 авг 05, 11:20    [1789185]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше?  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Конкретно в вашем примере должны работать совершенно одинаково - от одинаковых результатов до одинакового плана выполнения.

Если говорит в общем, что лучше - писать связки между таблицами в WHERE clause или во FROM clause, то имхо FROM с его джойнами лучше.

Почему лучше:
1. Это соответствует стандарту.
2. Это более читабельно. Связь таблиц указывается в одном месте, условия отбора - в другом.
3. С помощью джойнов вы можете выполнять связывания INNER, LEFT OUTER, RIGHT OUTER, FULL OUTER, CROSS. С помощью устаревшего синтаксиса *= и =* вы можете записать только INNER, LEFT OUTER, RIGHT OUTER. Поскольку смешивать в одном запросе оба синтаксиса вы не можете, то в общем случае использованием *= и =* вы ограничиваете себе функциональность запросов.
4. В случае более сложных запросов (не как в вашем примере) четкое деление на FROM и WHERE позволит оптимизатору выбрать лучший план, чем если все условия (и связи, и фильтры) записаны вперемешку.
16 авг 05, 11:23    [1789203]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше?  [new]
BSISoft
Member

Откуда: Москва
Сообщений: 383
Спасибо GreenSunrise. Я получил исчерпывающий ответ.
16 авг 05, 11:32    [1789272]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить