Tôi đã gặp một số vấn đề về hiệu suất khi sử dụng phương thức COUNT () OVER (). (Tôi không chắc đó có phải là máy chủ hay không vì mất 40 giây để trả về 10 bản ghi và sau đó không gặp bất kỳ sự cố nào.) Kỹ thuật này hoạt động trong mọi điều kiện mà không cần phải sử dụng COUNT ( ) OVER () và hoàn thành điều tương tự:
DECLARE
@PageSize INT = 10,
@PageNum INT = 1;
WITH TempResult AS(
SELECT ID, Name
FROM Table
), TempCount AS (
SELECT COUNT(*) AS MaxRows FROM TempResult
)
SELECT *
FROM TempResult, TempCount
ORDER BY TempResult.Name
OFFSET (@PageNum-1)*@PageSize ROWS
FETCH NEXT @PageSize ROWS ONLY