Tengo una Employeetabla 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 tblEmployeeselecciona todos los registros de la Employeetabla (para crear los MyRowNumbervalores).
Creo que esto provoca la selección de todos los registros en la Employeetabla.
¿Realmente funciona así? ¿O SQL Server está optimizado para seleccionar solo los 5 registros de la Employeetabla 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