Por lo que yo entiendo, cada transacción ve su propia versión de la base de datos, por lo que el sistema no puede obtener el número total de filas de algún contador y, por lo tanto, necesita escanear un índice. Pero pensé que sería el índice agrupado en la clave principal, no los índices adicionales. Si tuviera más de un índice adicional, ¿cuál será elegido?¿Por qué hay un análisis de índice no agrupado cuando se cuentan todas las filas en una tabla?
Al profundizar en el asunto, me he dado cuenta de otra cosa extraña. Supongamos que hay dos tablas idénticas, artículos y artículos2, cada uno con tres columnas: Id, View_Count y Title. El primero tiene solo un índice agrupado basado en PK, mientras que el segundo tiene un índice adicional no agrupado y no único en view_count. La consulta SELECT COUNT(1) FROM Articles
se ejecuta 2 veces más rápido para la tabla con el índice adicional.
Sí, me di cuenta cuando publiqué la segunda parte y miré el plan con más cuidado. La exploración de índice agrupado tiene el mismo costo de CPU pero un costo de E/S más alto. – synapse