Tôi có một Employeebả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 tblEmployeechọn tất cả các bản ghi trong Employeebảng (để tạo các MyRowNumbergiá 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 Employeebả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ừ Employeebả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