sql >> Database >  >> RDS >> Sqlserver

SQL SERVER 2008 JOIN-hints

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.

  1. 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 de JOIN en de WHERE voorwaarden.

  2. MERGE sorteert beide tabellen zijn doorloopt ze in de sorteervolgorde, waarbij de ongeëvenaarde records worden overgeslagen. Snelst voor de FULL JOIN s en wanneer beide recordsets al zijn gesorteerd (van eerdere sorteerbewerkingen of wanneer het indextoegangspad wordt gebruikt)

  3. HASH bouw een hashtabel in de tijdelijke opslag (geheugen of tempdb ) 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 de WHERE en JOIN staat.



  1. Hoe een ArrayList<String> door te geven aan een andere activiteit en deze om te zetten in double

  2. Door komma's gescheiden waarden

  3. Selecteer waarden uit het XML-veld in SQL Server 2008

  4. Is het mogelijk voor Oracle sqlldr om een ​​TNS-vermelding te accepteren als instantiekwalificatie in Oracle 10 en 11?