SQL की घोषणात्मक प्रकृति के कारण, डेटाबेस इंजन हो सकता है SQL कथन के कुछ हिस्सों का मूल्यांकन किसी भी क्रम में करने के लिए स्वतंत्रता लें जो इसे फिट देखता है (जब तक यह शब्दार्थ को प्रभावित नहीं करता है)। आपका सुझाव है कि GETUTCDATE()
कैश किया जा सकता है, एक प्रशंसनीय है।
मुझे पता है कि यह आपके प्रश्न का उत्तर नहीं देता है। लेकिन SQL2012 में GETUTCDATE का जो भी कार्यान्वयन हो, वह भविष्य के संस्करण में अच्छी तरह से बदल सकता है। तो इस पर भरोसा करने से बचें, या भविष्य के उन्नयन एक वास्तविक दर्द बन सकते हैं। अपने तर्क को इस तरह से लागू करें जो मूल्यांकन आदेश के संबंध में किसी भी धारणा पर निर्भर न हो।
आपके विशिष्ट मामले में, मुझे कुछ संभावित समाधान दिखाई दे रहे हैं।
- अगर आपको
OwningStatuses
से कोई समस्या नहीं है थोड़ा समय बिताने के बाद बाद मेंUserStatusesHistory
. की तुलना में , तो यह पहले से ही मदद कर सकता है यदि आप तीसरे चरण को SQL सर्वर पर एक अलग बैच के रूप में भेजते हैं। - चरण 2 और 3 स्वैप करें; और ट्रिगर क्वेरी
OwningStatuses
. दें अपनी तिथि तय करने के बजाय। - ट्रिगर का उपयोग करना बंद करें; इस पर विचार करने के एक से अधिक कारण हैं।