![]() |
|
Модераторы: LSD |
![]()
|
|
| blur |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 9.11.2004 Репутация: нет Всего: 1 |
Приветик,
Подскажите, для чего нужны скобки в join: (((t1 join t2 on .....) join t3 on ....) join t4 on ...) join .... и т.д и отличается это чем-то от того, если все это записать без скобок? |
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 6 Всего: 35 |
Все зависит от базы данных.
К примеру MSSQL скобки не нужны и порядок записи join-s не влияет на порядок связи таблиц при селекте. у Access влияет. -------------------- Никогда не говори никогда |
|||
|
||||
| comtat |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1310 Регистрация: 2.5.2006 Где: Россия, Казань Репутация: нет Всего: 71 |
У MySql все делается без скобок
-------------------- Рожденный в СССР !!! ExtJS - мой фреймворк |
|||
|
||||
| blur |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 9.11.2004 Репутация: нет Всего: 1 |
А может кто знает как к этим скобкам относится Oracle? И еще, имеет ли значение порядок, в котором связываются таблицы?
|
|||
|
||||
| Ignat |
|
|||
![]() Флудератор ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: нет Всего: 73 |
Зависит от того используется ли оптимизатор (хинты). -------------------- Теперь при чем :P |
|||
|
||||
| blur |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 9.11.2004 Репутация: нет Всего: 1 |
||||
|
||||
| Ignat |
|
|||
![]() Флудератор ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: нет Всего: 73 |
Об оптимизаторе есть смысл говорить применительно к конкретной БД. А Oracle я не знаю. -------------------- Теперь при чем :P |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
Оптимизатору все равно присутсвуют в тексте запроса скобки или нет (речь идет о тех скобках, которые не меняют смысла запроса). А вообще, надо просто посмотреть план выполнения и все. Зачем гадать, как себя поведет оптимизатор. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Sqlninja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 353 Регистрация: 15.5.2006 Где: San Francisco, CA Репутация: нет Всего: 13 |
В Oracle: Скобки не имеют значения. Порядок соединения таблиц имеет значение, т.к. непосредственно влияет на план выполнения и соответственно на производительность. -------------------- It's better to burn out than to fade away. |
|||
|
||||
| blur |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 9.11.2004 Репутация: нет Всего: 1 |
||||
|
||||
| Sqlninja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 353 Регистрация: 15.5.2006 Где: San Francisco, CA Репутация: нет Всего: 13 |
Пример привести могу, но станет ли от этого понятнее, не знаю.
то есть оракл будет соединять таблицы именно в том порядке, в котором они указаны в предложении FROM. Общее правило такое, что первыми должны соединяться таблицы (подзапросы и т.д.), из которых в запросе идет высокоселективная выборка, (то есть много отфильтровалось, мало выбралось) и дальше по убыванию селективности. Попробуй разный порядок соединения для нескольких таблиц и сравни планы. 80%, что они будут отличаться. Почему не 100 - отдельная тема. Если делать так как ты писал выше, по ANSI, то подсказка не нужна, порядок и так ясен. -------------------- It's better to burn out than to fade away. |
|||
|
||||
| Mephisto |
|
|||
![]() Волкъ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1818 Регистрация: 27.8.2003 Где: Питер Репутация: нет Всего: 34 |
На сколько я знаю порядок влияет на Outer join. А скобки, как по мне, не нужны. Т.к. порядок подключения ты указываешь после самого слова join.
|
|||
|
||||
| Olimpic21 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 18.9.2005 Репутация: нет Всего: нет |
можно вопрос?)
кратце поясните какие джоиты есть и что означают?))) плз) |
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 6 Всего: 35 |
INNER JOIN - результат записи между которыми есть соотвествие полей прописаных в условии связи (join)
LEFT JOIN - все записи из левой таблицы с соотвествующими записями из правой. Если нет соотвествия из правой таблицы, то поля заполняются NULL RIGHT JOIN - все записи из правой таблицы с соотвествующими записями из левой. Если нет соотвествия из левой таблицы, то поля заполняются NULL FULL JOIN - все записи из обоих таблиц. Если нет соотвествия в какой либо таблице, поля заполняются NULL. Cross join - каждая запись левой таблицы связывается со всеми записями правой, т.е. декартово произведение. -------------------- Никогда не говори никогда |
|||
|
||||
| Olimpic21 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 18.9.2005 Репутация: нет Всего: нет |
boevik благодарю!)
|
|||
|
||||
![]()
|
| Правила форума "Общие вопросы по базам данных" | |
|
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |