निम्नलिखित T-SQL संग्रहीत कार्यविधि एक बहुत है पेजिंग का कुशल कार्यान्वयन। SQL ऑप्टिमाइज़र पहली आईडी को बहुत तेज़ी से ढूंढ सकता है। इसे ROWCOUNT के उपयोग के साथ संयोजित करें, और आपके पास एक ऐसा दृष्टिकोण है जो CPU-कुशल और पढ़ने-कुशल दोनों है। बड़ी संख्या में पंक्तियों वाली तालिका के लिए, यह निश्चित रूप से किसी भी दृष्टिकोण को हरा देता है जिसे मैंने अस्थायी तालिका या तालिका चर का उपयोग करते हुए देखा है।
एनबी:मैं इस उदाहरण में अनुक्रमिक पहचान कॉलम का उपयोग कर रहा हूं, लेकिन कोड पेज सॉर्टिंग के लिए उपयुक्त किसी भी कॉलम पर काम करता है। साथ ही, उपयोग किए जा रहे कॉलम में अनुक्रम विराम परिणाम को प्रभावित नहीं करते क्योंकि कोड कॉलम मान के बजाय कई पंक्तियों का चयन करता है।
संपादित करें:यदि आप संभावित गैर-अद्वितीय मानों (जैसे अंतिम नाम) वाले कॉलम पर सॉर्ट कर रहे हैं, तो सॉर्ट मानों को फिर से अद्वितीय बनाने के लिए ऑर्डर बाय क्लॉज में दूसरा कॉलम जोड़ें।
CREATE PROCEDURE dbo.PagingTest
(
@PageNumber int,
@PageSize int
)
AS
DECLARE @FirstId int, @FirstRow int
SET @FirstRow = ( (@PageNumber - 1) * @PageSize ) + 1
SET ROWCOUNT @FirstRow
-- Add check here to ensure that @FirstRow is not
-- greater than the number of rows in the table.
SELECT @FirstId = [Id]
FROM dbo.TestTable
ORDER BY [Id]
SET ROWCOUNT @PageSize
SELECT *
FROM dbo.TestTable
WHERE [Id] >= @FirstId
ORDER BY [Id]
SET ROWCOUNT 0
GO