आप e.uon desc
. द्वारा क्रमित शीर्ष 50 पंक्तियों का चयन कर रहे हैं . एक इंडेक्स जो uon
. से शुरू होता है क्वेरी को गति देगा:
create index IX_Empl_Uon on dbo.empl (uon)
अनुक्रमणिका SQL सर्वर को इस अनुक्रमणिका की शीर्ष N पंक्तियों को स्कैन करने की अनुमति देगा। N आपके पेजिनेशन में सबसे बड़ी संख्या है:50 तत्वों के तीसरे पृष्ठ के लिए, N 150 के बराबर है। SQL सर्वर तब क्लस्टर इंडेक्स से पूरी पंक्तियों को पुनः प्राप्त करने के लिए 50 कुंजी लुकअप करता है। जहाँ तक मुझे पता है, यह एक पाठ्यपुस्तक का उदाहरण है जहाँ एक सूचकांक एक बड़ा बदलाव ला सकता है।
सभी क्वेरी ऑप्टिमाइज़र इतने स्मार्ट नहीं होंगे कि यह नोटिस कर सकें कि row_number() over ... as rn
where
rn between 1 and 50
. के साथ मतलब शीर्ष 50 पंक्तियाँ। लेकिन SQL सर्वर 2012 करता है। यह पहले और लगातार दोनों पेजों के लिए इंडेक्स का उपयोग करता है, जैसे row_number() between 50 and 99
।