इन स्थिरांक को देखते हुए, क्या SQL सर्वर हमेशा दिए गए क्वेरी के लिए एक ही योजना का उत्पादन करेगा? यदि नहीं, तो क्या अन्य विचार हैं? वहाँ भी nondeterminism का एक तत्व के रूप में अच्छी तरह से विचार करने के लिए है?
जहाँ तक मेरी जानकारी है, क्वेरी संकलन निर्धारक है। मूल क्यूओ डिजाइन लक्ष्यों में से एक यह था कि डेटाबेस की केवल एक प्रति का उपयोग करके एक अलग सिस्टम पर निष्पादन योजनाओं को पुन: प्रस्तुत करना संभव हो । वहाँ विन्यास की एक जोड़ी है कि, स्मृति मापदंडों की मात्रा के आसपास उपलब्ध मापदंडों, और तार्किक प्रोसेसर की संख्या है, लेकिन ये सिंक्रनाइज़ करने के लिए आपकी चीजों की सूची द्वारा कवर किए गए हैं।
कैविएट: यह सच है बशर्ते आपकी सूची में 'समान' शब्द का अर्थ सभी तरह से समान हो । उदाहरण के लिए, 'समान' आंकड़े दो प्रणालियों पर मौजूद हो सकते हैं, लेकिन वे केवल एक ही हैं यदि हिस्टोग्राम कदम और घनत्व की जानकारी समान है ।
उस ने कहा, अनुकूलन प्रक्रिया भी बेहद जटिल है , जिसका अर्थ है कि यह सुनिश्चित करना मुश्किल हो सकता है कि इस निर्धारक प्रक्रिया के सभी इनपुट समान हैं , और यह सुनिश्चित करने के लिए सभी आंतरिक राज्य समान हैं कि एक ही कोड पथ किसी विशेष के लिए ऑप्टिमाइज़र के माध्यम से लिया जाए। संकलन। यदि क्वेरी में डेटाबेस (किसी अन्य डेटाबेस या उदाहरण के बाहर) तक पहुंच है, तो उन वातावरणों को भी समान होना चाहिए।
एक बात जो मैं आपकी सूची में जोड़ना चाहूंगा, वह यह है कि कोई भी योजना गाइड दूसरे डेटाबेस में मौजूद है।
GETDATE()
प्रश्नों में गैर-नियतात्मक कार्यों का उपयोग करने का मतलब हो सकता है कि आपको एक अलग योजना भी मिल जाए। जबकि मुख्य अनुकूलक सीधे मूल्य का उपयोग नहीं करता है, कार्डिनैलिटी आकलन (कार्डिनैलिटी अनुमान के दौरान लगातार तह और अभिव्यक्ति का मूल्यांकन देख सकता है )। यदि यह अंतर वर्ग प्रश्न के दायरे में आता है तो मैं अनिश्चित हूं, क्योंकि दोनों प्रणालियां एक ही योजना का उत्पादन करेंगी यदि एक ही समय में निष्पादित किया जाता है (या, आमतौर पर, एक ही इनपुट चर, मापदंडों और फ़ंक्शन मानों के साथ)।