DateDiff
बेहद तेज़ है ... आपकी समस्या यह है कि आप इसे डेटाबेस तालिका कॉलम मान पर चला रहे हैं, इसलिए क्वेरी प्रोसेसर को तालिका में प्रत्येक पंक्ति पर फ़ंक्शन चलाने चाहिए, भले ही इस कॉलम पर कोई अनुक्रमणिका हो। इसका मतलब है कि इसे पूरी तालिका को डिस्क से लोड करना होगा।
इसके बजाय, आज की तारीख पर dateAdd
फ़ंक्शन का उपयोग करें, और उस एकल गणना के परिणामस्वरूप डेटाबेस तालिका कॉलम की तुलना करें। अब यह केवल DateAdd()
चलाता है, और यह केवल सूचकांक (यदि कोई मौजूद है) का उपयोग कर सकता है, केवल अनुमानित मानदंड से मेल खाने वाली पंक्तियों को लोड करने के लिए।
Where a.DateValue > DateAdd(day,-3,getdate())
इस तरह से यह कर आपकी क्वेरी विधेय SARG-able
स्रोत
2011-03-10 22:31:43
Sarg करने योग्य, मैंने पहले कि प्रतिक्रिया नहीं मिली है बनाता है। धन्यवाद! –
'क्वेरी प्रोसेसर को तालिका में प्रत्येक पंक्ति पर फ़ंक्शन चलाने चाहिए' मुझे उस समस्या को समझने और हल करने में मेरी सहायता हुई, जहां सटीक वही DATEDIFF कथन WHERE खंड में ओवरफ़्लो के बारे में शिकायत करेगा लेकिन चयन में नहीं होगा। –
मुझे एक सबक्वायरी के साथ परेशानी हो रही थी जो DATEDIFF के साथ जहां मुझे पागल बनाता है, आपका समाधान बहुत अच्छा था और वास्तव में मेरी मदद की। आपका बहुत बहुत धन्यवाद। – FabianSilva