我有一张Employee
有一百万条记录的表。我有以下用于在Web应用程序中分页数据的SQL。一切正常。但是,我认为是一个问题-派生表tblEmployee
选择表中的所有记录Employee
(以创建 MyRowNumber
值)。
我认为,这将导致选择Employee
表中的所有记录。
真的有效吗?还是对SQL Server进行了优化以从原始Employee
表中仅选择5条记录?
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