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

Seleziona dove ordine di valutazione della clausola

Non ci sono garanzie per l'ordine di valutazione. L'ottimizzatore proverà a trovare il modo più efficiente per eseguire la query, utilizzando le informazioni disponibili.

Nel tuo caso, poiché c è indicizzato e d non lo è, l'ottimizzatore dovrebbe esaminare l'indice per trovare tutte le righe che corrispondono al predicato su c, quindi recuperare quelle righe dai dati della tabella per valutare il predicato su d.

Tuttavia, se determina che l'indice su c non è molto selettivo (sebbene non nel tuo esempio, una colonna di genere sia raramente indicizzata in modo utile), potrebbe decidere di eseguire comunque la scansione della tabella.

Per determinare l'ordine di esecuzione, dovresti ottenere un piano esplicativo per la tua query. Tuttavia, tieni presente che quel piano potrebbe cambiare a seconda di ciò che l'ottimizzatore ritiene sia la query migliore in questo momento.