Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL] INNER JOIN
ols1994
post
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 29.06.2009

Ostrzeżenie: (0%)
-----


Mam pytanie jak używam w jednym zapytaniu kilkanaście razy 'inner join' to jakoś obciążam dodatkowo bazę? Czy zapytania takiego typu(patrz dół) są dobre?

  1. SELECT * FROM users
  2. INNER JOIN nazwa AS n1 ON users_id=n1.nazwa_id
  3. INNER JOIN nazwa AS n2 ON users_id=n2.nazwa_id
  4. INNER JOIN nazwa AS n3 ON users_id=n3.nazwa_id
  5. INNER JOIN nazwa AS n4 ON users_id=n4.nazwa_id
  6. INNER JOIN nazwa AS n5 ON users_id=n5.nazwa_id
  7. itp
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat(lobopol @ 31.12.2010, 11:41:31 ) *
Czy mógłby mi to ktoś wyjaśnić? Jest duża szansa, że się mylę, ale w firmie powstał praktycznie zakaz używania joinów i innodb (IMG:style_emoticons/default/smile.gif)

Masakra.

Po pierwsze połączenie tabel odbędzie się tylko na rekordach, które spełnia odpowiednie warunki. Więc nie zawsze oznacza to że całą połączona struktura danych jest tam gdzieś przechowywana nawet jeżeli nie są potrzebne.
InnoDb + indeksy jest lepszą kombinacja niż MyIsam + indeksy z tego względu,że innodb przechowuje główny identyfikator tabeli w każdym indeksie (co prawda czyni je to większymi ale wzrost wydajności jest dość znaczny).
Mysql, pomimo tego jak bardzo się na niego psioczy, bardzo dobrze radzi sobie z indeksami (oraz ich sprytnym wykorzystaniem) tak też im szybciej programiści je poznają tym lepiej dla wszystkich.
Przypadek o którym mówisz może wystąpić przy dziwnych podzapytaniach, unionach oraz źle skonstruowanych zapytań nie używających indeksów.

P.s. Od MyISAM się odchodzi.

Ten post edytował wookieb 31.12.2010, 12:09:34
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.10.2025 - 13:47