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

SQL Server 2005 ha memorizzato nella cache un piano di esecuzione che non potrebbe mai funzionare

Potresti essere interessato a Prima regola di programmazione .

Un indice cluster include sempre tutte le righe. Potrebbe essere ordinato da z , ma conterrà comunque tutte le altre colonne a livello di foglia.

Il motivo per cui a volte SQL Server preferisce un'analisi in cluster rispetto a una ricerca di indice è questo. Quando si esegue una ricerca di un indice, è necessario continuare con una ricerca di segnalibro nell'indice cluster per recuperare le colonne che non sono nell'indice.

Quando esegui una scansione dell'indice in cluster, per definizione trovi tutte le colonne. Ciò significa che non è richiesta alcuna ricerca di segnalibri.

Quando SQL Server prevede molte righe, tenta di evitare le ricerche di segnalibri. Questa è una scelta collaudata. Le ricerche di indici non cluster vengono regolarmente superate dalle scansioni di indici cluster.

Puoi testarlo per il tuo caso forzando con with (index(IX_YourIndex)) suggerimento per la query .