it-swarm.it

Differenza tra join Hash, Merge e Loop?

In SQL Server è possibile specificare i suggerimenti per il join:

  • HASH JOIN
  • UNISCI UNISCITI
  • LOOP JOIN

Qual è la definizione di questi tre suggerimenti per i join e quando dovrebbero essere usati ciascuno?

42
Andrew Bickerton

Da MSDN, nell'argomento Advanced Query Tuning Concepts :

SQL Server utilizza tre tipi di operazioni di join:

  • Unisci anelli 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 più semplice: Ottimizzazione delle query e infine utilizzare i suggerimenti per le query.

39
Marian