|
|
||||||
|
#1
|
|
|
|
|
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
|
|
|
|
|
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
|
|
|
|
|
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
|
|
|
|
|
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
|