Форум: "Базы";
Текущий архив: 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.052 c