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

come verificare che la query stia utilizzando index

Questo è in realtà più difficile di quanto sembri:un tipico DBMS moderno (e MS SQL Server non fa eccezione) a volte eseguirà una scansione completa della tabella anche se l'indice è disponibile, semplicemente perché potrebbe essere più veloce su piccole quantità di dati.

Esempio:

Inoltre, la decisione presa dal DBMS può essere influenzata dalla freschezza/accuratezza del statistiche sono.

Il test più affidabile per verificare se l'indice viene utilizzato è semplicemente riempire il database con quantità rappresentative di dati e poi guarda il piano di esecuzione . E non dimenticare di cronometrare l'effettiva esecuzione della query, già che ci sei!

Un esempio semplificato:se l'intera tabella rientra in una singola pagina del database, è più veloce caricare semplicemente quella pagina e scorrerla in sequenza, piuttosto che attendere l'I/O aggiuntivo per la pagina contenente l'indice.