In SQL Server è possibile specificare i suggerimenti per il join:
- HASH JOIN
- MERGE JOIN
- LOOP JOIN
Qual è la definizione di questi tre suggerimenti per i join e quando dovrebbero essere usati ciascuno?
In SQL Server è possibile specificare i suggerimenti per il join:
Qual è la definizione di questi tre suggerimenti per i join e quando dovrebbero essere usati ciascuno?
Risposte:
Da MSDN, nell'argomento Concetti di ottimizzazione delle query avanzate :
SQL Server utilizza tre tipi di operazioni di join:
Unisci loop annidati
Unisci join
Hash si unisce
Se un input di join è piccolo (meno di 10 righe) e l'altro input di join è abbastanza grande e indicizzato sulle sue colonne di join, un join di cicli annidati indice è l'operazione di join più veloce perché richiedono il minimo I / O e il minor numero di confronti. Per ulteriori informazioni sui loop nidificati, vedere Informazioni sui join di loop nidificati.
Se i due input di join non sono piccoli ma vengono ordinati sulla loro colonna di join (ad esempio, se sono stati ottenuti scansionando gli indici ordinati), un join di unione è l'operazione di join più veloce. Se entrambi gli input di join sono di grandi dimensioni e i due input hanno dimensioni simili, un join di unione con l'ordinamento precedente e un join di hash offrono prestazioni simili. Tuttavia, le operazioni di hash join sono spesso molto più veloci se le due dimensioni di input differiscono significativamente l'una dall'altra. Per ulteriori informazioni, vedere Informazioni su Unisci join.
I join hash possono elaborare in modo efficiente input di grandi dimensioni, non ordinati e non indicizzati.
Ma credo che dovresti iniziare con un argomento di base: Ottimizzazione delle query e infine utilizzare i suggerimenti per le query.