Row_Number() OVER (ORDER BY (SELECT 1))
चाल नहीं होनी चाहिए अंतर्निहित डेटा के क्रम को बदलने से बचने के तरीके के रूप में देखा जा सकता है। यह सर्वर को एक अतिरिक्त और अनावश्यक सॉर्ट करने से रोकने का केवल एक साधन है (यह अभी भी सॉर्ट कर सकता है लेकिन कॉलम द्वारा सॉर्ट करने की तुलना में यह न्यूनतम संभव राशि खर्च करने वाला है)।
SQL सर्वर में सभी क्वेरी बिल्कुल जरूरी एक ORDER BY
गारंटीशुदा तरीके से परिणामों को मज़बूती से ऑर्डर करने के लिए सबसे बाहरी क्वेरी में क्लॉज़।
संबंधपरक डेटाबेस में "मूल आदेश बनाए रखना" की अवधारणा मौजूद नहीं है। जब तक ORDER BY
. न हो तब तक तालिकाओं और प्रश्नों को हमेशा अनियंत्रित माना जाना चाहिए क्लॉज सबसे बाहरी क्वेरी में निर्दिष्ट है।
आप एक ही अनियंत्रित क्वेरी को 100,000 बार आज़मा सकते हैं और इसे हमेशा उसी क्रम के साथ प्राप्त कर सकते हैं, और इस प्रकार यह विश्वास हो जाता है कि आप उक्त आदेश पर भरोसा कर सकते हैं। लेकिन यह एक गलती होगी, क्योंकि एक दिन कुछ बदलेगा और उसमें वह क्रम नहीं होगा जिसकी आप अपेक्षा करते हैं। एक उदाहरण यह है कि जब किसी डेटाबेस को SQL सर्वर के नए संस्करण में अपग्रेड किया जाता है--इससे कई क्वेरी को अपना क्रम बदलना पड़ता है। लेकिन यह इतना बड़ा बदलाव नहीं होना चाहिए। किसी इंडेक्स को जोड़ने या हटाने जितना कम कुछ अंतर पैदा कर सकता है। और अधिक:सर्विस पैक स्थापित करना। एक तालिका का विभाजन। एक अनुक्रमित दृश्य बनाना जिसमें विचाराधीन तालिका शामिल है। कुछ टिपिंग पॉइंट तक पहुँचना जहाँ एक खोज के बजाय एक स्कैन को चुना जाता है। और इसी तरह।
जब तक आपने "सर्वर, ORDER BY
नहीं कहा है, तब तक ऑर्डर किए जाने वाले परिणामों पर भरोसा न करें ".