थोड़ी देर की खोज के बाद, मैंने इस सवाल का जवाब देने की कमी के लिए पोस्ट करने का फैसला किया और अगर वहाँ भी इसी तरह का प्रश्न / उत्तर है तो माफी माँगता हूँ।
नीचे दिए गए क्वेरी को दो समान SQL सर्वर पर चलाते समय, हम विभिन्न निष्पादन योजनाओं का सामना करते हैं जो प्रदर्शन को प्रभावित करते हैं और हमें कारण जानने में मदद की आवश्यकता होती है।
पूछताछ:
SELECT process_id
INTO #temp
FROM revrep_revenue_fact
WHERE process_id = 284
DROP TABLE #temp
सर्वर ए की निष्पादन योजना
सर्वर बी सर्वर बी http://s2.postimg.org/z9fjrfv4n/server_B.png की निष्पादन योजना
आपको लगता है कि सर्वर बी वास्तविक निष्पादन योजना में शीर्ष शारीरिक ऑपरेशन है और हम यह पता लगाने की कोशिश कर रहे हैं कि क्यों। दोनों प्रश्न इंडेक्स सीक में एक ही सूचकांक का उपयोग करते हैं।
यहाँ सर्वर ए और सर्वर बी के कुछ विवरण दिए गए हैं
सर्वर A और B दोनों हैं
विंडोज सर्वर 2008 आर 2 मानक सर्विस पैक 1
24 जीबी रैम
64-बिट ऑपरेटिंग सिस्टम
SQL सर्वर 2012 संस्करण का उपयोग करके प्राप्त ( चयन SERVERPROPERTY ( 'ProductVersion') )
सर्वर A SQL संस्करण 11.0.3000.0
सर्वर B SQL संस्करण 11.0.5058.0
हमने क्या प्रयास किया है
निष्पादन योजना में सर्वर B का TOP क्यों है ? इस सरल क्वेरी उदाहरण में कोई वास्तविक समस्या नहीं है, लेकिन एक बड़ी क्वेरी में TOP के लिए लागत बढ़ जाती है और हम एक प्रदर्शन हिट देखते हैं। किसी भी मदद डिबगिंग यह बहुत सराहना की जाएगी और हम आपको कोई भी अतिरिक्त जानकारी प्राप्त कर सकते हैं जिसकी आपको मदद करने की आवश्यकता हो सकती है।
GO
पंक्तिबद्ध पंक्ति के बाद रख सकते हैं । क्या आप शीर्ष ऑपरेटर के गुणों को भी पोस्ट कर सकते हैं?
TOP
ऑपरेटर पता चलता है एक गैर शून्यSET ROWCOUNT
पहले कि कनेक्शन पर मार डाला गया था। निष्पादित करने के बाद फिर से प्रयास करेंSET ROWCOUNT 0;
। साथ ही, आपके द्वारा पोस्ट किए गए SQL संस्करण SQL 2008 R2 नहीं हैं।SELECT SERVERPROPERTY('ProductVersion');
वास्तविक SQL सर्वर संस्करण प्राप्त करने के लिए 2 सर्वरों पर चलाएँ ।