लगभग 500-10,000 पंक्तियों वाली तालिका के विरुद्ध SQL सर्वर 2005 का उपयोग कर सबसे कुशल पेजिंग समाधान क्या है? मैंने वहां कई लोगों को देखा है लेकिन उनकी तुलना कुछ भी नहीं।SQL सर्वर 2005 का उपयोग कर सर्वश्रेष्ठ पेजिंग समाधान?
उत्तर
आकार की एक तालिका के लिए, एक सामान्य-तालिका अभिव्यक्ति (सीटीई) और ROW_NUMBER का उपयोग करें; @PageNumber
और @PageSize
चर (या जो भी आप उन्हें कॉल करना चाहते हैं) के आधार पर वापस लाने के लिए रिकॉर्ड्स की गणना करने के लिए एक छोटे से फ़ंक्शन का उपयोग करें। हमारे संग्रहित प्रक्रियाओं में से एक से सरल उदाहरण:
-- calculate the record numbers that we need
DECLARE @FirstRow INT, @LastRow INT
SELECT @FirstRow = ((@PageNumber - 1) * @PageSize) + 1,
@LastRow = ((@PageNumber - 1) * @PageSize) + @PageSize
;
WITH CTE AS
(
SELECT [Fields]
, ROW_NUMBER() OVER (ORDER BY [Field] [ASC|DESC]) as RowNumber
FROM [Tables]
WHERE [Conditions, etc]
)
SELECT *
-- get the total records so the web layer can work out
-- how many pages there are
, (SELECT COUNT(*) FROM CTE) AS TotalRecords
FROM CTE
WHERE RowNumber BETWEEN @FirstRow AND @LastRow
ORDER BY RowNumber ASC
क्या आपको पृष्ठों की कुल संख्या प्राप्त करने से पहले एक बार प्रो को चलाने के लिए इंतजार करना होगा? – Caveatrob
पीएस - यह अब तक बहुत अच्छा काम कर रहा है! – Caveatrob
हां - जिस तरह से हम करते हैं, वह एक छोटे पेजिंगइन्फो ऑब्जेक्ट को पॉप्युलेट करने के लिए प्रो के परिणामों का उपयोग करना है जो पेज नंबर लिंक लिखने की प्रक्रिया को संभालता है। मान लीजिए कि आप क्वेरी में जॉइन या फ़ंक्शन कॉल की पागल संख्या नहीं कर रहे हैं, इस बच्चे को तुरंत-करीब चलना चाहिए, इसलिए यह हमारे लिए कभी भी कोई मुद्दा नहीं रहा है। खुशी है कि यह आपके लिए काम कर रहा है :) –
विभिन्न पेजिंग तकनीक मैंने कभी पढ़ा है का सबसे अच्छा विचार विमर्श से एक यहां है: SQL Server 2005 Paging – The Holy Grail। आलेख देखने के लिए आपको SQLServerCentral.com पर एक नि: शुल्क पंजीकरण पूरा करना होगा, लेकिन यह इसके लायक है।
.. यहां तक कि इस मदद करनी चाहिए
SELECT * FROM
(
SELECT Row_Number() OVER(order by USER_ID) As RowID,
COUNT (USER_ID) OVER (PARTITION BY null) AS TOTAL_ROWS,
select name from usertbl
)
As RowResults WHERE
RowID Between 0 AND 25
नहीं जानते कि क्या अपने @keith संस्करण की तुलना में बेहतर है।
- 1. पेजिंग SQL सर्वर 2005 परिणाम
- 2. SQL सर्वर 2005 (SQL Server 2005)
- 3. मैं SQL सर्वर 2005
- 4. SQL सर्वर 2005 डेटाबेस
- 5. SQL सर्वर पर System.Transactions का उपयोग कर TransactionInDoubtException 2005
- 6. SQL सर्वर 2005 डेटाबेस
- 7. SQL सर्वर 2005 प्रतिकृति
- 8. SQL सर्वर 2005 डेटाबेस
- 9. SQL सर्वर 2005
- 10. SQL सर्वर 2005
- 11. मैं SQL सर्वर 2005
- 12. मैं SQL सर्वर 2005
- 13. SQL सर्वर 2005
- 14. SQL सर्वर 2005
- 15. मैं SQL सर्वर 2005
- 16. SQL सर्वर 2005
- 17. स्प्लिट Sql सर्वर 2005
- 18. SQL सर्वर 2005
- 19. SQL सर्वर 2005
- 20. SQL सर्वर 2005
- 21. SQL सर्वर 2005
- 22. SQL सर्वर 2005
- 23. SQL सर्वर 2005
- 24. SQL सर्वर 2005
- 25. SQL सर्वर 2005
- 26. SQL सर्वर 2005
- 27. SQL सर्वर 2005 डेटाबेस
- 28. SQL सर्वर 2005/2008
- 29. SQL सर्वर 2005
- 30. कैसे करें: SQL सर्वर 2005
[एएसपी.नेट, एसक्यूएल 2005 "पेजिंग"] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/1058825/asp-net-sql-2005-paging) – M4N
कई: http://stackoverflow.com/प्रश्न/टैग/पेजिनेशन + एसक्यूएल-सर्वर –