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.
-
LOOPis 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 deJOINen deWHEREvoorwaarden. -
MERGEsorteert beide tabellen zijn doorloopt ze in de sorteervolgorde, waarbij de ongeëvenaarde records worden overgeslagen. Snelst voor deFULL JOINs en wanneer beide recordsets al zijn gesorteerd (van eerdere sorteerbewerkingen of wanneer het indextoegangspad wordt gebruikt) -
HASHbouw 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 deWHEREenJOINstaat.