2011-01-03 9 views
6

संवेदनशील एसक्यूएल कमांड निष्पादित करने से पहले मैं एक सैनिटी चेक करना चाहता था।3 दिन की नौकरी रोलिंग के लिए 3 दिनों से अधिक की तारीख वाले रिकॉर्ड हटाना?

मैं रिकॉर्ड एक [LoadDt] दिनांक मान है कि पुराने 3 दिनों से हटाने के लिए कोशिश कर रहा हूँ और मेरे कोड है:

delete IntraDayStats 
where DATEDIFF(dd, LoadDt, dateadd(d,-3, getdate())) >= 3 

मैं एक एसक्यूएल काम के रूप में इस समय निर्धारित करना चाहते हैं, जिससे कि मेरी IntraDayStats तालिका एक है 3 दिन का इतिहास रोलिंग। नौकरी रात में चलेगी।

उत्तर

9
where DATEDIFF(dd, LoadDt, dateadd(d,-3, getdate())) >= 3 

, sargable (एक सूचकांक उपयोग नहीं किया जाएगा) नहीं है का उपयोग

where LoadDt < getdate()- 3 

अगली बार जब आप जाँच करना चाहते हैं, DELETE एक SELECT बनाने के लिए और क्या तुम वापस पाने के

+0

देखना क्या योग्य है? मैंने कभी इसके बारे में नहीं सुना ... मैंने चयन किया लेकिन तीन दिनों के लिए तर्क को दोबारा जांचना चाहता था। धन्यवाद – kacalapy

+0

http://en.wikipedia.org/wiki/Sargable – SQLMenace

संबंधित मुद्दे