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

SQL Server 2005 - Ordine dei join interni

SQL è dichiarativo, ovvero l'ordine JOIN non dovrebbe avere importanza.

Tuttavia può in pratica, ad esempio, se si tratta di una query complessa quando l'ottimizzatore non esplora tutte le opzioni (cosa che in teoria potrebbe richiedere mesi).

Un'altra opzione è che si tratta di una query molto diversa se riordini e ottieni risultati diversi, ma di solito è con OUTER JOIN.

E potrebbe anche essere il modo in cui viene specificata la clausola ON. Deve cambiare se riordini la clausola FROM. A meno che tu non stia usando la vecchia (e cattiva) clausola JOIN-in-the-WHERE.

Infine, se è un problema, puoi utilizzare le parentesi per modificare l'ordine di valutazione per chiarire le tue intenzioni, ad esempio filtra prima su una tabella di grandi dimensioni per generare una tabella derivata.