Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.54 MB
Время: 0.024 c
1-1092205940
Никита
2004-08-11 10:32
2004.08.29
Многозадачное приложение


1-1092722107
СержК
2004-08-17 09:55
2004.08.29
Как закрыть OLE объект ?


4-1090164957
SashOK
2004-07-18 19:35
2004.08.29
ОТключить устройство


14-1092311413
WondeRu
2004-08-12 15:50
2004.08.29
Компоненты для работы с шифрованием по ...


8-1086276830
Borealis
2004-06-03 19:33
2004.08.29
RIFF CDXA




   Наверх