Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
10-1032385659
epflorov
2002-09-19 01:47
2004.08.29
как указать порт для ORBa


3-1091619121
Алексей
2004-08-04 15:32
2004.08.29
FOX, ADO и отрицательный числа


1-1092653822
Makssim
2004-08-16 14:57
2004.08.29
Как присвоить stringовой переменной сегодняшнюю дату?


1-1092327123
xman
2004-08-12 20:12
2004.08.29
STRING в CHAR


1-1092298372
LKan
2004-08-12 12:12
2004.08.29
непонятное расширение abs





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский