Форум: "Базы";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];
ВнизSQL Найти похожие ветки
← →
Trofimov (2004-08-05 14:31) [40]Теперь такой вопрос: что лучше и почему? (вопрос ко всем)
Про execution plan MS SQL мне рассказывать не нужно
← →
Sandman25 © (2004-08-05 14:32) [41]3 вариант
select
claim.inc,
"order".claim,
freight.lname,
ta.lname,
tb.lname
from
claim,
"order",
freight,
town ta,
town tb
where ta.inc=freight.source
and tb.inc=freight.target
and claim.inc="order".claim
and "order".freight=freight.inc
← →
Sandman25 © (2004-08-05 14:33) [42]>Теперь такой вопрос: что лучше и почему? (вопрос ко всем)
Вопрос не имеет смыла - запросы не эквивалентны :)
Для эквивалентности придется воспользоваться Outer join
← →
Sandman25 © (2004-08-05 14:37) [43]select
claim.inc,
(select "order".claim from "order" where claim.inc="order".claim),
(select freight.lname from freight where freight.inc =(select "order".freight from "order" where claim.inc="order".claim)),
source = (Select town.lname from town where town.inc =
(select freight.source from freight where freight.inc =(select "order".freight from "order" where claim.inc="order".claim))),
target = (Select town.lname from town where town.inc =
(select freight.target from freight where freight.inc =(select "order".freight from "order" where claim.inc="order".claim)))
from
claim
Надеюсь, после просмотра этого select станет очевидно, что не стоит пользоваться вложенными select, если можно воспользоваться join :)
← →
Trofimov (2004-08-05 14:38) [44]Ну 3 вариант я согласен пока что лучший, но что ж мне все голову трепали про внутреннее соединение когда можно было так сделать?
← →
Trofimov (2004-08-05 14:40) [45]мой вывод - внешнее соединение наиболее оптимально
← →
Johnmen © (2004-08-05 14:42) [46]Потому, что внутреннее соединение (JOIN) = 3 варианту.
Но с JOIN читабельней.
← →
Danilka © (2004-08-05 14:46) [47][46] Johnmen © (05.08.04 14:42)
Кому как, я больше к 3 варианту привык, для меня он читабельней. :)
← →
Trofimov (2004-08-05 15:43) [48]Ну а работает что быстрее join или where
← →
Trofimov (2004-08-05 16:27) [49]разве связка по типу join не будет работать гораздо быстрее связки по типу where... ? На скорость доступа к результирующему НД это не повлияет, но сам запрос будет выполняться быстрее. По крайней мере, в парадоксе или IB это так (при прочих равных условиях).
← →
Johnmen © (2004-08-05 16:33) [50]>Ну а работает что быстрее join или where
2 = 2
Что больше 2 или 2 ?
:)
Есть, правда, ещё такая вещь, как парсер и оптимизатор запросов. У них можно спросить. У правильных - одинаково.
← →
Trofimov (2004-08-05 17:01) [51]Ну а тогда какой смысл создавать было JOIN если они с WHERE аналогично работать будут?
← →
Johnmen © (2004-08-05 17:07) [52]Аналогично только в данном конкретном случае.
И джоин он разный, понимаешь, бывает...
← →
Trofimov (2004-08-05 17:11) [53]Ты имеешь ввиду inner left right natural cross и т.п?
← →
Trofimov (2004-08-05 17:13) [54]Тогда я согласен. Вообщем сегодня свой вопрос я окончательно решил. Всем большое спасибо.
Страницы: 1 2 вся ветка
Форум: "Базы";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.054 c