Ik gebruik LEFT JOIN om data van meerder tabellen te roepen, dus vroeg mij af dat jullie het wel goed vinden en of betere methodes zijn om geen snelheid kwijt te raken.
Indexes plaatsen op de te doorzoeken velden kan bovendien ook geen kwaad.
Johan de wit op 10/12/2015 02:43:44

Ik gebruik LEFT JOIN om data van meerder tabellen te roepen, dus vroeg mij af dat jullie het wel goed vinden en of betere methodes zijn om geen snelheid kwijt te raken.


Nogal een erg algemene vraag als je het mij vraagt.
Welke data heb je op welke manier opgeslagen en wat wil je er van aan elkaar koppelen?
is/zijn er altijd record(s) om te joinen, of kunnen deze ontbreken.

Als er altijd een record zal zijn, zou een inner-join beter kunnen zijn.
Het is inderdaad nogal een algemene vraag, maar het algemene antwoord daarop is dan: een INNER JOIN is sneller dan een outer join (een LEFT JOIN of RIGHT JOIN). Een LEFT JOIN moet namelijk ook resultaten geven als er geen records in andere tabellen worden gevonden en daarvoor vervolgens een NULL produceren, wat tijd kost. Een LEFT JOIN produceert daarnaast meer data dan een INNER JOIN, wat eveneens tijd en geheugen kost.


Uit: Visual Representation of SQL Joins

Daarmee is het vooral een theoretische vergelijking, want je krijgt gewoon andere data terug. En niet de performance maar de benodigde data bepalen wat de juiste JOIN is. Het gebruiken van geschikte kandidaatsleutels en indexen is veel belangrijker voor performance.

Ik heb drie verschillende statussen.

Top 10:
Gekocht
Aanraders
Aanbieding

Alledrie statussen wil ik onder elkaar roepen.
Johan, het is mij niet duidelijk wat je vraag is.

Reageren