मैं रिकॉर्ड्स का एक समूह जोड़ने के लिए डेटाबेस दृश्य लिख रहा हूं जहां दिनांक कॉलम में मान पिछले 7 दिनों के भीतर है। ऐसा कुछ ऐसा दिखता है:मैं SQL व्यू में getdate() के उपयोग से कैसे बचूं?
CREATE VIEW RecentRecordSum AS
SELECT t.ID,
SUM(t.SomeValue) AS ValueSum
FROM SomeTable t
WHERE t.RecordDate >= DATEADD(d,-7,GETDATE())
GROUP BY t.ID
क्या GETDATE() सीधे उस खंड में बिना इसे करने का कोई तरीका है?
मैं एसक्यूएल सर्वर 2000 और 2005
क्वेरी योजना को देखते हुए पता चलता है कि संपूर्ण क्वेरी का केवल 0.03% (जो एक की तुलना में काफी अधिक जटिल है है getdate() कॉल की लागत का उपयोग कर रहा उपर्युक्त), इसलिए प्रदर्शन कोई मुद्दा नहीं है, हालांकि मुझे अपने प्रश्नों को निर्धारक माना जाता है।
आदर्श रूप में मैं -7 पैरामीटर को कॉलम के रूप में बेनकाब करना चाहता हूं ताकि इसका उपयोग किसी क्वेरी के पूछताछ के खंड में किया जा सके। वर्तमान में मैं 7, 14, 28 दिन खिड़कियों के लिए विचारों की एक छोटी संख्या पर विचार कर रहा हूं।
सुनिश्चित नहीं हैं कि अगर मैं सवाल को समझते हैं। जहां खंड में नहीं होगा तो यह कहां होगा? क्या आप किसी प्रकार के पैरामीटर के बारे में सोच रहे हैं जिसमें आप गुजरते हैं? – micahtan
मुझे लगता है कि यह परिणामसेट की प्रत्येक पंक्ति के लिए GETDATE() का मूल्यांकन करने के प्रदर्शन हिट से बचने के लिए है। – Joe
आप मानते हैं कि प्रत्येक पंक्ति के लिए इसका मूल्यांकन क्यों किया जाता है? – RedFilter