/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
[MySQL]Antal joins i en query?
Fra : Stig Nørgaard Jepsen


Dato : 17-01-02 09:09

[Lign. spørgsmål postet i alt.php.sql]
Jeg spekulerer lidt over hvor mange joins det er okay at bruge i éen query i
forhold til performance?

Jeg er blevet fortalt, at hvis jeg fx. har 4 forskellige tabeller med hver
20rækker, så bliver MySQL nød til at generere en midlertidig tabel med
160.000rækker. Det lyder som ret meget!
Men det er måske også kun i extreme tilfælde.

Hvad nu hvis man har disse 4 tabeller og næsten hver række i hovedtabellen
har sin egen makker i en anden tabel, og man så linker/joiner dem. - Skal
man så stadig forvente at der bliver genereret en meget stor midlertidig
tabel?

Ville det efter nogens overbevisning være bedre at lave en query først med 2
tabeller joined, og så derefter køre 2 selvstændige queries på baggrund af
den første query?

Andre tanker ang. dette?

/Stig



 
 
Niels Andersen (17-01-2002)
Kommentar
Fra : Niels Andersen


Dato : 17-01-02 09:22

"Stig Nørgaard Jepsen" <stigen@mail.dk> wrote in message
news:3c468668$0$95362$edfadb0f@dspool01.news.tele.dk...
> Jeg er blevet fortalt, at hvis jeg fx. har 4 forskellige tabeller med hver
> 20rækker, så bliver MySQL nød til at generere en midlertidig tabel med
> 160.000rækker. Det lyder som ret meget!

Nej, jeg sagde "i værste fald".
Fx. "FROM tabel1, tabel2, tabel3, tabel4" med 20 rækker i hver tabel, så vil
der på et tidspunkt i din query være 160.000 rækker.

> Hvad nu hvis man har disse 4 tabeller og næsten hver række i hovedtabellen
> har sin egen makker i en anden tabel, og man så linker/joiner dem. - Skal
> man så stadig forvente at der bliver genereret en meget stor midlertidig
> tabel?

Altså alt hvad der er i de tre af tabellerne, matcher én linje i den fjerde
tabel?

FROM tabel1
LEFT JOIN tabel2 WHERE tabel1.id=tabel2.id
LEFT JOIN tabel3 WHERE tabel1.id=tabel3.id
LEFT JOIN tabel4 WHERE tabel1.id=tabel4.id

Så vil der aldrig være flere rækker, end der er i tabel1.

--
Mvh.

Niels Andersen



Stig Nørgaard Jepsen (17-01-2002)
Kommentar
Fra : Stig Nørgaard Jepsen


Dato : 17-01-02 10:42

> Altså alt hvad der er i de tre af tabellerne, matcher én linje i den
fjerde
> tabel?
>
> FROM tabel1
> LEFT JOIN tabel2 WHERE tabel1.id=tabel2.id
> LEFT JOIN tabel3 WHERE tabel1.id=tabel3.id
> LEFT JOIN tabel4 WHERE tabel1.id=tabel4.id
>
> Så vil der aldrig være flere rækker, end der er i tabel1.

Ahaa.. no problem så... :)

/Stig



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408927
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste