Omdat dit de optimizer de mogelijkheid ontneemt om andere methoden te overwegen die efficiënter kunnen zijn.
Wanneer de gegevensdistributie (waarover de optimizer zijn beslissingen neemt) ernstig scheef is en de statistieken dit niet correct kunnen weergeven.
Dit zijn verschillende algoritmen.
-
LOOP
is geneste lussen:voor elk record uit de buitenste tabel wordt in de binnenste tabel gezocht naar overeenkomsten (met behulp van de index van beschikbare). Het snelst wanneer slechts een klein deel van de records uit beide tabellen voldoet aan deJOIN
en deWHERE
voorwaarden. -
MERGE
sorteert beide tabellen zijn doorloopt ze in de sorteervolgorde, waarbij de ongeëvenaarde records worden overgeslagen. Snelst voor deFULL JOIN
s en wanneer beide recordsets al zijn gesorteerd (van eerdere sorteerbewerkingen of wanneer het indextoegangspad wordt gebruikt) -
HASH
bouw een hashtabel in de tijdelijke opslag (geheugen oftempdb
) uit een van de tabellen en zoekt het voor elk record van de andere. Het snelst als het grote deel van de records uit een van beide tabellen overeenkomt met deWHERE
enJOIN
staat.