SQL सर्वर में, क्लस्टर किए गए अनुक्रमणिका का बैकवर्ड स्कैन समानता का उपयोग क्यों नहीं कर सकता है?


21

मैं SQL सर्वर इंटर्नल के बारे में पढ़ रहा हूं और हर पुस्तक या ब्लॉग में पिछड़े स्कैन के बारे में उल्लेख किया गया है।

क्लस्टर किए गए अनुक्रमणिका का बैकवर्ड स्कैन समानता का उपयोग नहीं कर सकता है

एकमात्र पोस्ट जिसने कुछ कहा है, वह नीचे एक है। पोस्ट कहता है कि SQL सर्वर टीम ने बैकवर्ड स्कैन के लिए आवश्यक अनुकूलन को लागू नहीं किया। https://www.itprotoday.com/sql-server/descending-indexes

चूँकि लीफ़ लेवल पेज एक डबल लिस्टेड लिस्ट का उपयोग करके जुड़े होते हैं, मुझे समझ नहीं आता कि बैकवर्ड स्कैन फॉरवर्ड स्कैन से अलग क्यों होता है। किसी भी स्पष्टीकरण वास्तव में सराहना की है।

जवाबों:


19

संदर्भित आलेख विशेष रूप से बताता है कि SQL सर्वर 2008 (CU6 के रूप में) में बैकवर्ड ऑर्डर किए गए स्कैन को समानांतर नहीं किया गया था, लेकिन तकनीकी नहीं है, क्योंकि यह सुविधा ग्राहकों द्वारा अनुरोध नहीं की गई थी और देव टीम इसे लागू करने के लिए परेशान नहीं हुई थी।

ध्यान दें कि लेख लगभग 10 साल पहले अब असमर्थित SQL सर्वर 2008 संस्करण के संदर्भ में लिखा गया था। स्टोरेज इंजन और ऑप्टिमाइज़र में महत्वपूर्ण बदलाव हुए हैं। उस ने कहा, मैं अभी भी SQL सर्वर 2017 पर आलेख की डेमो क्वेरी से संस्करण के ASCलिए क्वेरी और एक सीरियल योजना के लिए एक समानांतर योजना देखता हूं DESC:

SELECT *
FROM dbo.Orders
WHERE orderid <= 100000
ORDER BY orderdate ASC;

SELECT *
FROM dbo.Orders
WHERE orderid <= 100000
ORDER BY orderdate DESC;

SQL 2019 CTP 3.2 के तहत उन्हीं प्रश्नों को चलाना, दोनों के लिए एक सीरियल प्लान दिखाता है जब तक कि मैंने क्वेरी को बदल नहीं दिया WHERE orderid <= 50000, जहां मैंने तब SQL सर्वर 2017 के समान व्यवहार देखा था। इसलिए ऐसा लगता है कि या तो समानांतर बैकवर्ड स्कैन अभी भी लागू नहीं हुआ है या इसे देखने के लिए एक अलग परिदृश्य की आवश्यकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.