Tengo una Employee
tabla que tiene un millón de registros. Tengo el siguiente SQL para paginar datos en una aplicación web. Esta funcionando bien Sin embargo, lo que veo como un problema es que la tabla derivada tblEmployee
selecciona todos los registros de la Employee
tabla (para crear los MyRowNumber
valores).
Creo que esto provoca la selección de todos los registros en la Employee
tabla.
¿Realmente funciona así? ¿O SQL Server está optimizado para seleccionar solo los 5 registros de la Employee
tabla original también?
DECLARE @Index INT;
DECLARE @PageSize INT;
SET @Index = 3;
SET @PageSize = 5;
SELECT * FROM
(SELECT ROW_NUMBER() OVER (ORDER BY EmpID asc) as MyRowNumber,*
FROM Employee) tblEmployee
WHERE MyRowNumber BETWEEN ( ((@Index - 1) * @PageSize )+ 1) AND @Index*@PageSize