Eu tenho uma Employeetabela que tem um milhão de registros. Eu tenho o seguinte SQL para paginar dados em um aplicativo da web. Está funcionando bem. No entanto, o que eu vejo como um problema é - a tabela derivada tblEmployeeseleciona todos os registros da Employeetabela (para criar os MyRowNumbervalores).
Eu acho que isso causa a seleção de todos os registros na Employeetabela.
Isso realmente funciona? Ou o SQL Server é otimizado para selecionar também apenas os 5 registros da Employeetabela original ?
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