Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Perché viene visualizzato un tipo nel mio piano di esecuzione?

SQL Server dispone di tre algoritmi tra cui scegliere quando è necessario unire due tabelle. Il Nested-Loops-Join, l'Hash-Join e il Sort-Merge-Join. Quale seleziona si basa su stime di costo. In questo caso si è pensato che, in base alle informazioni che aveva a disposizione, un Sort-Merge-Join fosse la scelta giusta.

Nei piani di esecuzione di SQL Server un Sort-Merge è suddiviso in due operatori, Sort e Merge-Join, perché l'operazione di ordinamento potrebbe non essere necessaria, ad esempio se i dati sono già ordinati.

Per ulteriori informazioni sui join, dai un'occhiata alla mia serie di join qui:http://sqlity.net/en/1146/a-join-a-day-introduzione/ L'articolo sul Sort-Merg-Join è qui:http://sqlity.net/en/1480/a-join-a-day-the-sort-merge-join/

Per rendere la tua query più veloce, per prima cosa guarderei gli indici. Hai un sacco di scansioni di indici in cluster nella query. Se riesci a sostituirne alcuni con le ricerche, molto probabilmente starai meglio. Verificare inoltre se le stime prodotte da SQL Server corrispondono ai conteggi di righe effettivi in ​​un piano di esecuzione effettivo. Se sono lontani, SQL Server spesso fa scelte sbagliate. Pertanto, fornire statistiche migliori può aiutarti anche a interrogare le prestazioni.