मुझे COUNT() OVER() विधि का उपयोग करके कुछ प्रदर्शन समस्याओं का सामना करना पड़ा। (मुझे यकीन नहीं है कि यह सर्वर था क्योंकि 10 रिकॉर्ड वापस करने में 40 सेकंड का समय लगा और फिर बाद में कोई समस्या नहीं हुई।) इस तकनीक ने COUNT( का उपयोग किए बिना सभी परिस्थितियों में काम किया। ) OVER() और वही काम पूरा करता है:
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