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

L'ordine Sql JOIN influisce sulle prestazioni?

L'ordine di join nel server SQL2008R2 influisce indiscutibilmente sulle prestazioni delle query, in particolare nelle query in cui è presente un numero elevato di join di tabelle con clausole where applicate a più tabelle.

Sebbene l'ordine di unione sia stato modificato nell'ottimizzazione, l'ottimizzatore non prova tutti i possibili ordini di unione. Si ferma quando trova quella che considera una soluzione praticabile poiché l'atto stesso di ottimizzazione utilizza risorse preziose.

Abbiamo visto che le query con prestazioni simili a quelle dei cani (1 minuto + tempo di esecuzione) si riducono a prestazioni inferiori al secondo semplicemente modificando l'ordine delle espressioni di join. Tieni presente, tuttavia, che si tratta di query con da 12 a 20 join e clausole where su diverse tabelle.

Il trucco consiste nell'impostare l'ordine per aiutare l'ottimizzatore di query a capire cosa ha senso. Puoi usare Force Order ma può essere troppo rigido. Cerca di assicurarti che il tuo ordine di unione inizi con le tabelle in cui ridurranno maggiormente i dati attraverso le clausole where.