У меня есть Employee
таблица с одним миллионом записей. У меня есть следующий SQL для подкачки данных в веб-приложении. Работает нормально. Однако, что я вижу как проблему - производная таблица tblEmployee
выбирает все записи в Employee
таблице (для создания MyRowNumber
значений).
Я думаю, что это вызывает выбор всех записей в Employee
таблице.
Это действительно так работает? Или SQL Server оптимизирован для выбора только 5 записей из исходной Employee
таблицы?
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