Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2008.09.14;
Скачать: [xml.tar.bz2];

Вниз

Порядок таблиц в left join   Найти похожие ветки 

 
Ega23 ©   (2008-03-05 13:10) [0]

Что-то не пойму никак..
Table1, 30000 записей
Table2, 300 записей.

Select ....
from Table1 T1 left join Table2 on (t1.Fld=T2.Fld)

или


Select ....
from Table1 T1 left join Table2 on (t1.Fld=T2.Fld)

?

И так и так одинаково по времени получается...


 
b z   (2008-03-05 13:21) [1]

Не мудрено ... а в чем вопрос?


 
Ega23 ©   (2008-03-05 13:23) [2]

пардон, очепятка

Select ....
from Table1 T1 left join Table2 on (t1.Fld=T2.Fld)

или

Select ....
from Table2 T2 left join Table1 on (t2.Fld=T1.Fld)


 
Johnmen ©   (2008-03-05 13:30) [3]

Разница есть.
Но при таких количествах записей, её заметить трудно. А порой и невозможно...


 
Ega23 ©   (2008-03-05 13:36) [4]

Хорошо. Table1 - 4.000.000
Tabl2 - 50.000

условие в where - Table2.Fld in (от 1 до 50 значений).


 
Johnmen ©   (2008-03-05 13:48) [5]


> Ega23 ©   (05.03.08 13:36) [4]

Не понял, это про что?


 
Правильный_Вася   (2008-03-05 14:04) [6]

у них разница в результирующем наборе, в первую очередь


 
stone   (2008-03-05 14:25) [7]


> Ega23 ©   (05.03.08 13:10)  

для оптимизации см. варианты джойна (loop, hash) также можно указать принудительный порядок джойна используя OPTION (FORCE ORDER)


 
Ega23 ©   (2008-03-05 14:40) [8]


> stone   (05.03.08 14:25) [7]


Тёзка, спасибо!


 
DiamondShark ©   (2008-03-07 15:17) [9]


> Ega23 ©   (05.03.08 13:23) [2]

А как лучше:
3 - 8
или
8 - 3
?

left join некоммутативная операция, поэтому, спрашивать "или" -- по меньшей мере, странно.


 
Anatoly Podgoretsky ©   (2008-03-08 11:57) [10]

Другое дело, если первое LEFT OUTER JOIN, а второе RIGHT OUTER JOIN, тогда можно было бы еще говорить, а так полная бессмыслица, результаты абсолютно разные. Ну или INNER JOIN


 
Правильный_Вася   (2008-03-09 18:15) [11]

видимо, у него частный случай, когда что outer, что inner - дают одинаковый результат
иначе бы уже заметил Правильный_Вася   (05.03.08 14:04) [6]


 
Anatoly Podgoretsky ©   (2008-03-09 20:57) [12]

Так может надо использовать INNER JOIN как самый производительный вариант?


 
Prohodil Mimo ©   (2008-03-09 22:08) [13]

Правильный_Вася   (09.03.08 18:15) [11]

ну так у него и есть одинаковый результат.
отличия были бы, если бы после

Select ....
from Table1 T1 left join Table2 on (t1.Fld=T2.Fld)


или

Select ....
from Table2 T2 left join Table1 on (t2.Fld=T1.Fld)


было WHERE .....


 
Правильный_Вася   (2008-03-10 16:04) [14]


> Prohodil Mimo ©   (09.03.08 22:08) [13]

ты хорошо подумал?
а теперь проведи эксперимент


 
Prohodil Mimo ©   (2008-03-11 16:11) [15]

Правильный_Вася   (10.03.08 16:04) [14]
а теперь проведи эксперимент


Провёл.
Получилось так, как я и говорил :о)
Но если ещё подумать, то да, различия могут быть.


 
tesseract ©   (2008-03-12 18:30) [16]


> Так может надо использовать INNER JOIN как самый производительный
> вариант?


С чегой-то то он производительный ? Просто игнорирует несоотвествие с обоих сторон.


> Prohodil Mimo ©   (09.03.08 22:08) [13]


Зависит от данных и степени нормализации, при 3-ей нормализации всё одинаково.
У меня реально на 1С-ке при SQL запросах результаты разных join разные, 2 недели репой бился.  

ЗЫ: убил бы авторов парсера SQL от MS.


 
Правильный_Вася   (2008-03-13 11:04) [17]


> Зависит от данных и степени нормализации, при 3-ей нормализации
> всё одинаково.

байки
представь 2 таблицы, одна из которых ссылается на другую 1:N, при этом в ней есть ссылки не на все записи
и попробуй


 
Prohodil Mimo ©   (2008-03-13 23:08) [18]

Правильный_Вася   (13.03.08 11:04) [17]
вот только в этом случае и получится по разному. Но если каждая запись ссылатся на запись из другой таблицы, то оба запроса будут одинаковы.


 
Правильный_Вася   (2008-03-14 10:50) [19]


> Но если каждая запись ссылатся на запись из другой таблицы,
>  то оба запроса будут одинаковы.

тогда outer join и не нужен
ведь он нужен для случаев отсутствия, чтоб null"ы подставить


 
Кщд   (2008-03-14 10:51) [20]

>Prohodil Mimo ©   (13.03.08 23:08) [18]
Вы используете для таких таблиц внешнее объединение?
зачем?


 
Prohodil Mimo ©   (2008-03-14 18:00) [21]

Кщд   (14.03.08 10:51) [20]

для каждого случая свой вид объединения.
речь то шла об left join, а тестировалось на том, что под руку попалось.


 
Prohodil Mimo ©   (2008-03-14 18:00) [22]

Кщд   (14.03.08 10:51) [20]
и вообще, я то тут при чём?



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2008.09.14;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.047 c
2-1217826999
deadteachers
2008-08-04 09:16
2008.09.14
Связи между БД


15-1216878566
Msd
2008-07-24 09:49
2008.09.14
Помогите с МеМО


2-1217484390
a.a.j.
2008-07-31 10:06
2008.09.14
inifiles vs xml


3-1205241234
DmitriyG.
2008-03-11 16:13
2008.09.14
Отмена выполнения запроса


2-1217456314
Dars73
2008-07-31 02:18
2008.09.14
Неполучается создать таблицу





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский