लघु जवाब: क्योंकि अनुकूलक सोचता है कि यह तेजी से होगा।
हालांकि, आइए ऑप्टिमाइज़र के दिमाग को पढ़ने का प्रयास करें।
चूंकि आपने पूर्ण तालिका स्कीमा प्रदान नहीं किया है, इसलिए मुझे लगता है कि xxx.ID
पर एक क्लस्टर्ड इंडेक्स है और #TaxInvoiceData
एक ढेर है। आप एक ऐसी योजना की उम्मीद कर रहे हैं जहां #TaxInvoiceData
में प्रत्येक पंक्ति के लिए पीके इंडेक्स की जांच की जाए, लेकिन आप xxx.Field4
चुन रहे हैं जिसके लिए प्रत्येक मैच के लिए बुकमार्क लुकअप की आवश्यकता होगी। इसके परिणामस्वरूप 2 9, 000 यादृच्छिक I/O अनुरोध हो सकते हैं। आउच।
इसके विपरीत, एसक्यूएल सर्वर सिर्फ अधिक कुशल अनुक्रमिक की एक बड़ी राशि प्रदर्शन आई/ओ तालिका स्कैन करने और शायद #TaxInvoiceData
के खिलाफ एक तेजी से हैश मैच कर रहा है (और जाहिरा तौर पर करने जा रहा है) हो सकता है।
तो आप क्या कर सकते हैं? आप Field4
सहित एक कवर इंडेक्स बना सकते हैं। या आप इंडेक्स का उपयोग कर सकते हैं और जिस योजना को आप ढूंढ रहे हैं उसे मजबूर करने के लिए संकेतों में शामिल हो सकते हैं (लेकिन मुझे संदेह है कि प्रदर्शन उतना अच्छा नहीं होगा जितना आप उम्मीद करते हैं)। क्या यह क्वेरी अक्सर पर्याप्त रूप से उपयोग की जाती है कि यह आपके एप्लिकेशन की प्रदर्शन समस्याएं दे रही है या क्या आप सिद्धांत पर तालिका स्कैन को खत्म करने की सोच रहे हैं? यदि उत्तरार्द्ध, आपको स्कैन से छुटकारा पाने का ओवरहेड मिल सकता है तो अंत में इसके लायक नहीं है।
संपादित करें:
आप उल्लेख किया है के बाद से मेज पर कोई संकुल अनुक्रमणिका यह है कि, यह भी प्रभावित कर सकता है कैसे कुशल लुकअप सूचकांक से कर रहे हैं। जब तक यह तालिका अत्यधिक भारी सम्मिलित गतिविधि नहीं देख रही है, तब तक अपने पीके को क्लस्टर करने के लिए बदलने पर विचार करें। वह अकेला योजना बदल सकता है, और यहां तक कि अगर यह कम ओवरहेड के कारण अन्य परिचालनों को तेज करने की संभावना नहीं है।
#TaxInvoiceData में कितनी पंक्तियां हैं? – Joe
* क्या एक सूचकांक खोजता है * - ठीक है, लेकिन ** ** सूचकांक ** ??? इसके अलावा: आप कहते हैं कि '(आईडी, फ़ील्ड 2, फ़ील्ड 3) 'आपके' टेबल एक्स 'पर प्राथमिक कुंजी हैं - क्या यह तालिका पर ** क्लस्टर्ड इंडेक्स ** भी है ?? या यह एक ढेर है ?? –
एस क्वेरी में कैसे शामिल हो गया है? ऐसा हो सकता है कि प्राथमिक कुंजी को क्लस्टर नहीं किया गया है क्योंकि प्रत्येक पंक्ति के लिए सूचकांक और तालिका के बीच कूदने के बजाय तालिका को स्कैन करना तेज़ है। – idstam