Ho una Employee
tabella che ha un milione di record. Ho seguito SQL per i dati di paginazione in un'applicazione web. Funziona benissimo. Tuttavia ciò che vedo come un problema è: la tabella derivata tblEmployee
seleziona tutti i record nella Employee
tabella (per creare i MyRowNumber
valori).
Penso che questo provochi la selezione di tutti i record nella Employee
tabella.
Funziona davvero così? Oppure SQL Server è ottimizzato per selezionare solo i 5 record dalla Employee
tabella originale ?
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