Tôi có một Employee
bảng có một triệu hồ sơ. Tôi đã theo SQL để phân trang dữ liệu trong một ứng dụng web. Nó đang hoạt động tốt. Tuy nhiên, điều tôi thấy là một vấn đề là - bảng dẫn xuất tblEmployee
chọn tất cả các bản ghi trong Employee
bảng (để tạo các MyRowNumber
giá trị).
Tôi nghĩ rằng, điều này gây ra sự lựa chọn của tất cả các hồ sơ trong Employee
bảng.
Nó thực sự làm việc như vậy? Hoặc SQL Server được tối ưu hóa để chỉ chọn 5 bản ghi từ Employee
bảng gốc ?
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