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