У мене є 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