संपादित करें:मैं अभी भी अधिक उत्तरों के लिए इंतजार कर रहा हूं। धन्यवाद!एसक्यूएल सर्वर 2005 में बहुत बड़े परिणाम सेट के माध्यम से पेजिंग का एक प्रभावी तरीका क्या है?
एसक्यूएल 2000 दिनों, मैं अस्थायी तालिका पद्धति जहां आप नई पहचान स्तंभ और प्राथमिक कुंजी के साथ एक अस्थायी तालिका बनाने का उपयोग करते थे फिर चुनें जहां ए और बी
के बीच पहचान स्तंभजब एसक्यूएल 2005 आया साथ ही मुझे Row_Number()
पता चला है और मैं इसका उपयोग तब से कर रहा हूं ...
लेकिन अब, मुझे Row_Number()
के साथ एक गंभीर प्रदर्शन समस्या मिली है। यह बहुत अच्छा प्रदर्शन करता है जब आप न तो विशाल परिणाम सेट के साथ काम कर रहे हैं और पहचान कॉलम पर सॉर्ट कर रहे हैं। हालांकि, यह पर बहुत खराब प्रदर्शन करता है जब आप के साथ काम कर रहे हैं बड़े परिणाम 10,000 से अधिक रिकॉर्ड और गैर-पहचान कॉलम पर सॉर्ट करते हैं। Row_Number()
यदि आप सेट सेट 250,000 से अधिक रिकॉर्ड हैं तो पहचान कॉलम द्वारा सॉर्ट करते हुए भी खराब प्रदर्शन करते हैं। मेरे लिए, यह एक बिंदु है जहां यह एक त्रुटि, "आदेश टाइमआउट!"
क्या आप एक बड़े एसक्यूएल 2005 को सेट परिणाम पृष्ठ पर अंक लगाना करने के लिए प्रयोग करते हैं फेंकता के लिए आया था? क्या इस मामले में temp table method अभी भी बेहतर है? मुझे यकीन नहीं है कि यह विधि using temp table with SET ROWCOUNT बेहतर प्रदर्शन करेगी ... लेकिन कुछ कहते हैं कि यदि आपके पास बहु-कॉलम प्राथमिक कुंजी है तो गलत पंक्ति संख्या देने का कोई मुद्दा है।
मेरे मामले में, मुझे अपने उत्पादन वेब ऐप के लिए दिनांक प्रकार कॉलम द्वारा परिणाम सेट को सॉर्ट करने में सक्षम होना चाहिए।
मुझे बताएं कि आप SQL 2005 में उच्च प्रदर्शन करने वाले पेजिनेशन के लिए क्या उपयोग करते हैं। और मैं इंडेक्स बनाने का एक स्मार्ट तरीका भी जानना चाहता हूं। मुझे सही प्राथमिक कुंजी और/या इंडेक्स (क्लस्टर्ड/गैर क्लस्टर) चुनने पर संदेह है, यहां एक बड़ी भूमिका निभाएगी।
अग्रिम धन्यवाद।
पीएस क्या किसी को पता है कि स्टैक ओवरफ्लो किस प्रकार उपयोग करता है?
संपादित करें: मेरा कुछ की तरह लग रहा ...
SELECT postID, postTitle, postDate
FROM
(SELECT postID, postTitle, postDate,
ROW_NUMBER() OVER(ORDER BY postDate DESC, postID DESC) as RowNum
FROM MyTable
) as DerivedMyTable
WHERE RowNum BETWEEN @startRowIndex AND (@startRowIndex + @maximumRows) - 1
postid: इंट, पहचान (स्वत: वेतन वृद्धि), प्राथमिक कुंजी
postdate: DATETIME
संपादित करें: क्या हर कोई Row_Number() का उपयोग कर रहा है?
आपके इनपुट के लिए धन्यवाद। मैंने अपना प्रश्न अपडेट किया। –