sql >> Base de Datos >  >> RDS >> Sqlserver

Las lecturas no son bajas después de poner un índice

Está seleccionando las 50 filas principales ordenadas por e.uon desc . Un índice que comienza con uon acelerará la consulta:

create index IX_Empl_Uon on dbo.empl (uon)

El índice permitirá a SQL Server escanear las N filas superiores de este índice. N es el número más alto en su paginación:para la tercera página de 50 elementos, N es igual a 150. Luego, SQL Server realiza 50 búsquedas clave para recuperar las filas completas del índice agrupado. Hasta donde yo sé, este es un ejemplo de libro de texto de dónde un índice puede marcar una gran diferencia.

No todos los optimizadores de consultas serán lo suficientemente inteligentes como para notar que row_number() over ... as rn con where rn between 1 and 50 significa las 50 primeras filas. Pero SQL Server 2012 sí. Utiliza el índice tanto para la primera página como para las consecutivas, como row_number() between 50 and 99 .