En realidad, esto es más difícil de lo que parece:un DBMS moderno típico (y MS SQL Server no es una excepción) a veces realizará un escaneo completo de la tabla incluso si el índice está disponible, simplemente porque podría ser más rápido con pequeñas cantidades de datos.
Ejemplo:
-
La última declaración en este ejemplo de SQL Fiddle puede ser satisfecho por el índice, sin embargo, el plan de consulta indicó claramente un escaneo de tabla:
-
Pero si insertamos algunos datos , se utiliza el índice:
Además, la decisión que toma el DBMS puede verse influenciada por la frescura/precisión de estadísticas son.
La prueba más confiable para saber si se usa el índice es simplemente llenar su base de datos con cantidades representativas de datos. y entonces mira el plan de ejecución . ¡Y no olvide cronometrar la ejecución real de la consulta, mientras lo hace!
Un ejemplo simplificado:si toda la tabla cabe en una sola página de la base de datos, es más rápido simplemente cargar esa página y revisarla secuencialmente, que esperar la E/S adicional para la página que contiene el índice.