Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.29;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.065 c
1-1092670055
ЮрийК
2004-08-16 19:27
2004.08.29
Почему получается исключение?


1-1092570397
mOOx
2004-08-15 15:46
2004.08.29
Выделение цветом в ListView


1-1092304940
Alek
2004-08-12 14:02
2004.08.29
Про работу с фреймами


4-1089976743
AleXqwq
2004-07-16 15:19
2004.08.29
Regional seetings


4-1089876981
webpauk
2004-07-15 11:36
2004.08.29
AppendMenu, ShortCat