प्रदर्शन का ख्याल रखें:
मैंने अनुभव किया कि कम से कम ईएफ कोर के साथ यहां दिए गए अलग-अलग उत्तरों के परिणामस्वरूप अलग-अलग प्रदर्शन हो सकते हैं। मुझे पता है कि ओपी ने लाइनक से एसक्यूएल के बारे में पूछा था, लेकिन मुझे लगता है कि ईएफ कोर के साथ भी यही सवाल हैं।
एक विशिष्ट मामले में मुझे संभालना था, (ग्रेनेकल मार्क द्वारा) मार्क ग्रेवेल द्वारा दिए गए सुझाव के परिणामस्वरूप क्रॉस क्रॉस के अंदर बाईं ओर जुड़ गए - इसी तरह माइक यू ने वर्णन किया - जिसके परिणामस्वरूप इस विशिष्ट क्वेरी के लिए अनुमानित लागत दो थे बिना क्रॉस जॉइन वाले क्वेरी की तुलना में उच्च । सर्वर निष्पादन समय 3 के कारक से भिन्न होता है । [1]
मार्क ग्रेवेल द्वारा समाधान बिना क्रॉस जॉइन के एक क्वेरी के परिणामस्वरूप हुआ।
संदर्भ: मुझे अनिवार्य रूप से दो टेबलों पर दो बाएं जोड़ प्रदर्शन करने की आवश्यकता थी, जिनमें से प्रत्येक को फिर से एक अन्य तालिका में शामिल होने की आवश्यकता थी। इसके अलावा, मुझे वहाँ अन्य जहाँ-जिन शर्तों पर मुझे लेफ्ट जॉइन करने की आवश्यकता थी, उन्हें निर्दिष्ट करना था। इसके अलावा, मेरे पास मुख्य टेबल पर दो आंतरिक जोड़ थे।
अनुमानित ऑपरेटर लागत:
- क्रॉस के साथ लागू करें: 0.2534
- बिना क्रॉस अप्लाई: 0.0991।
एमएस में सर्वर निष्पादन समय (10 बार निष्पादित क्वेरीज़, सेट सांख्यिकी समय का उपयोग करके मापा जाता है):
- क्रॉस के साथ लागू करें: 5, 6, 6, 6, 6, 6, 6, 6, 6, 6
- बिना क्रॉस अप्लाई: 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
(दोनों सवालों के लिए बहुत पहले रन धीमा था; ऐसा लगता है कि कुछ कैश्ड है।)
तालिका आकार:
- मुख्य तालिका: 87 पंक्तियाँ,
- बाएँ जुड़ने के लिए पहली तालिका: 179 पंक्तियाँ;
- बाईं ओर दूसरी तालिका में शामिल होने के लिए: 7 पंक्तियाँ।
ईएफ कोर संस्करण: 2.2.1।
SQL सर्वर संस्करण: MS SQL सर्वर 2017 - 14 ... (विंडोज 10 पर)।
सभी संबंधित तालिकाओं में केवल प्राथमिक कुंजियों पर अनुक्रमित थे।
मेरा निष्कर्ष: यह हमेशा उत्पन्न SQL को देखने के लिए अनुशंसित है क्योंकि यह वास्तव में भिन्न हो सकता है।
[१] एमएस एसक्यूएल सर्वर मैनेजमेंट स्टूडियो में] क्लाइंट आँकड़े ’सेट करते समय, दिलचस्प रूप से पर्याप्त, मैं एक विपरीत प्रवृत्ति देख सकता था; अर्थात् क्रॉस क्रॉस के बिना समाधान के अंतिम रन ने 1s से अधिक लिया। मुझे लगता है कि यहाँ कुछ गलत हो रहा था - शायद मेरे सेटअप के साथ।