LINQ to SQL एक ROW_NUMBER विंडोिंग फ़ंक्शन का उपयोग करके ऐसा करता है:
SELECT a,b,c FROM
(SELECT a,b,c, ROW_NUMBER() OVER (ORDER BY ...) as row_number
FROM Table) t0
WHERE to.row_number BETWEEN 1000 and 1100;
यह काम करता है, लेकिन आदेश द्वारा से ROW_NUMBER का निर्माण करने की जरूरत हो सकती है आपकी क्वेरी में परिणाम सर्वर साइड और कारण प्रदर्शन की समस्याओं पर हल कर जा रहा है। यहां तक कि जब कोई सूचकांक आदेश द्वारा आवश्यकता को पूरा कर सकता है, तो परिणाम वापस करने से पहले क्वेरी को अभी भी 1000 पंक्तियों को गिनना होगा। सभी अक्सर डेवलपर्स इसे भूल जाते हैं और सिर्फ 5 सैन्य पंक्तियों की तालिका पर एक अंकुश लगाने का नियंत्रण फेंक देते हैं और आश्चर्य करते हैं कि पहला पृष्ठ पिछले एक की तुलना में बहुत तेजी से क्यों लौटा है ...
कम नहीं, ROW_NUMBER () का उपयोग करना संभवतः उपयोग में आसानी और अच्छे प्रदर्शन के बीच सबसे अच्छा संतुलन है, बशर्ते आप यह सुनिश्चित करें कि आप सॉर्ट से बचते हैं (ORDER BY शर्त को एक सूचकांक द्वारा संतृप्त किया जा सकता है)।