hilpers


  hilpers > comp.* > comp.bazy-danych

 #1  
26.02.2005, 16:23
maruszek
Czy jest jakas roznica w dzialaniu zapytania sql, jesli raz warunek polaczenia
tabel zapiszemy w WHERE:
select * from T1, T2 where T1.ID1 = T2.ID1

a drugi raz zrobimy polaczenie przez JOIN:
select * from T1 join T2 on T1.ID1 = T2.ID1

Czy baza danych (mowie tu o popularnych bazach) moze wygenerowac rozne plany
wykonania dla takich zapytan?
Czy mogą być jakies inne roznice? Ktory sposob zapisu preferujecie i dlaczego?
 #2  
26.02.2005, 17:09
Moneetor
Dnia 05-02-26 18:23, Użytkownik maruszek napisał:
> Czy jest jakas roznica w dzialaniu zapytania sql, jesli raz warunek polaczenia
> tabel zapiszemy w WHERE:
> select * from T1, T2 where T1.ID1 = T2.ID1
>
> a drugi raz zrobimy polaczenie przez JOIN:
> select * from T1 join T2 on T1.ID1 = T2.ID1
>
> Czy baza danych (mowie tu o popularnych bazach) moze wygenerowac rozne plany
> wykonania dla takich zapytan?
> Czy mogą być jakies inne roznice? Ktory sposob zapisu preferujecie i dlaczego?
>Z tego co się orientuję where w takim kontekscie nawet jeśli zostanie

wykonane, nie stworzy tobie relacji między tymi dwiema tabelami.
Dostaniesz wyciąg z 2ch niezwiązanych ze sobą tabel. W przypadku join
masz zachowaną pełną relację między tabelami a dodatkowo where pomoże ci
ograniczyć uzyskany wynik do kryteriów następujących po where.

Pozdrawiam Moneetor
 #3  
26.02.2005, 17:37
Filip Sielimowicz
Użytkownik "maruszek" <maruszekWYTNIJTO> napisał w wiadomości
news:b09d
>
> Czy jest jakas roznica w dzialaniu zapytania sql, jesli raz warunek

polaczenia
> tabel zapiszemy w WHERE:
> select * from T1, T2 where T1.ID1 = T2.ID1
>
> a drugi raz zrobimy polaczenie przez JOIN:
> select * from T1 join T2 on T1.ID1 = T2.ID1
>
> Czy baza danych (mowie tu o popularnych bazach) moze wygenerowac rozne

plany
> wykonania dla takich zapytan?
> Czy mogą być jakies inne roznice? Ktory sposob zapisu preferujecie i

dlaczego?

Zaawansowanym bazom danych nie powinno to zrobić różnicy. Po prostu będą
się starać zrobić plan jak najwydajniejszy i tyle.
Ale nie wszystkie "popularne bazy danych" są zaawansowane. Nie jestem
pewien,
jak się np. zachowa Interbase 6.0 czy FireBird.
 #4  
26.02.2005, 19:49
Sebastian
Użytkownik "Moneetor" <moneetor> napisał w wiadomości
news:4dk1
> Dnia 05-02-26 18:23, Użytkownik maruszek napisał:
> Z tego co się orientuję where w takim kontekscie nawet jeśli zostanie
> wykonane, nie stworzy tobie relacji między tymi dwiema tabelami.
> Dostaniesz wyciąg z 2ch niezwiązanych ze sobą tabel. W przypadku join masz
> zachowaną pełną relację między tabelami a dodatkowo where pomoże ci
> ograniczyć uzyskany wynik do kryteriów następujących po where.
>
> Pozdrawiam Moneetor


Nie rozumiem o co Ci chodzi w stwierdzeniu "wyciąg z 2ch niezwiązanych ze
sobą tabel". Wynik obu zapytan jest ten sam, w zadnym wypadku nie beda to
dwie tabele. Wiec nie ma mowy o tworzeniu relacji miedzy nimi. Jednak moga
powstac dwa rozne plany wiec i szybkosc wykonania moze byc rozna. Zalezy co
zrobi optymalizator.
Ja preferuje sposob z JOIN-em, gdyz moim zdaniem lepiej on obrazuje jak
lacze tabele. Jednak w warunku ON podaje tylko warunek zlaczenia tabel a nie
predykaty selekcji. Predykaty takie umieszczam w klauzli WHERE gdyz tam jest
dla nich miejsce i licze ze optymalizator i tak zrobi wszystko skutecznie.

Sebastian
Podobne wątki
[JPA] Join i warunek złączenia

Witam Chciałbym wykonać złączenie dwóch encji w JPA, ale pod warunkiem nieco bardziej rozbudowanym niż zwykłe bycie w relacji. Konkretny przykład: mamy tabele: - dostawców...

SELECT dla INNER JOIN (warunek)

Witam, Baza danych to MySQL. Dla tabel: CREATE TABLE Plyty ( Id INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, Autor TEXT, Tytul TEXT, Kategoria INTEGER

MySQL LEFT JOIN na 4 tabel

Jak to zrobic? Leszek

[mysql] join dwoch tabel

mam pytanie w jakis sposob zrobic w miare ladne (jak najszybsze) zapytanie do bazy ktore pobiera wartosci z jednej tabeli i jedna czy dwie (to zalezy wlasnie chyba od...


Czasy w strefie GMT. Teraz jest 10:38. | Privacy Policy