DateTime2 (0), dateTime2 (1), dateTime2 (2), dateTime2 (3) का आकार समान मात्रा में भंडारण का उपयोग करता है। (6 बाइट्स)
क्या मैं यह कहने में सही रहूंगा कि मैं डेटटाइम 2 (3) के साथ जा सकता हूं और बिना किसी अतिरिक्त आकार लागत के सटीक लाभ प्राप्त कर सकता हूं।
नहीं, आपने दस्तावेज़ की गलत व्याख्या की। ध्यान दें कि स्टोरेज साइज 6 बाइट्स को 3 (जोर मेरा) से कम के प्रीडिसेस के लिए नोट करता है । तो 3 के बराबर एक सटीक 7 बाइट्स की आवश्यकता होगी।
यदि आप मिलीसेकंड के बारे में परवाह नहीं करते हैं, datetime2(0)
तो उचित डेटा प्रकार और सटीक होगा। सबसे अच्छा अभ्यास संग्रहीत डेटा के आधार पर उचित डेटा प्रकार और परिशुद्धता को निर्दिष्ट करना है क्योंकि यह स्वाभाविक रूप से इष्टतम भंडारण और दक्षता प्रदान करेगा। कहा जा रहा है, मैं निर्दिष्ट डेटाइम 2 परिशुद्धता के आधार पर एक महत्वपूर्ण प्रदर्शन प्रभाव की उम्मीद नहीं करूंगा जब तक कि भंडारण आकार समान है लेकिन मैंने विशेष रूप से खुद का परीक्षण नहीं किया है।
एप्लिकेशन आवश्यकताएं डेटाबेस में संग्रहीत की जानी चाहिए, जब स्रोत में अधिक सटीक उपलब्ध हो। उदाहरण के लिए, एक ऑर्डर एंट्री के समय के लिए, जहां से SYSDATETIME()
उपयोगकर्ताओं को 100 नैनोसेकंड सटीक नहीं चाहिए। फिर से, आवश्यकताओं के अनुसार नए विकास के लिए डेटा प्रकार और सटीक चुनें और आप आमतौर पर अतिरिक्त विचार के बिना इष्टतम प्रदर्शन प्राप्त करेंगे:
- दिनांक - आपको समय की आवश्यकता नहीं है
- smalldatetime - आपको सेकंड की आवश्यकता नहीं है
- datetime2 (0) - आपको भिन्नात्मक सेकंड की आवश्यकता नहीं है
- डेटटाइम 2 (1-7) - आपको निर्दिष्ट सटीक अंशों की आवश्यकता है
- डेटाइमऑफ़सेट (4-7) - आपको समय क्षेत्र जागरूकता के साथ दिनांक और समय की आवश्यकता है
- समय (4-7) - आपको निर्दिष्ट परिशुद्धता के आंशिक अंशों के साथ केवल समय (कोई तारीख) की आवश्यकता है
हालांकि datetime2 नए विकास के लिए सबसे उपयुक्त के रूप में ऊपर सूचीबद्ध है, एक कभी कभी उपयोग करना पड़ सकता datetime , बजाय विरासत datetime अनुप्रयोगों के साथ संगतता के लिए (1/300 आंशिक सेकंड सटीकता के साथ तय हो गई परिशुद्धता 3) इस प्रकार निहित रूपांतरण और अप्रत्याशित तुलना व्यवहार से बचने, लेकिन कम से आंशिक दूसरी सटीकता और बढ़े हुए भंडारण का खर्च।
इस बात पर विचार करें कि आवश्यकता से अधिक सटीक भंडारण करने से विकास लागत भी हो सकती है। यदि कोई समय घटक को केवल दूसरी पूरी आवश्यकता होने पर भिन्नात्मक सेकंडों के साथ संग्रहीत करता है, तो प्रश्नों को अभी भी सही परिणामों को वापस करने के लिए भिन्नात्मक सेकंडों पर विचार करना होगा। उदाहरण के लिए, एक ऐप के साथ जहां उपयोगकर्ता एक यूआई के माध्यम से समय सीमा का चयन करता है जो केवल पूरे सेकंड के लिए अनुमति देता है, ऐप कोड को अंतिम समय सीमा मूल्य में आंशिक सेकंड के लिए खाते में रखने की आवश्यकता होती है और तदनुसार उपयोगकर्ता-आपूर्ति किए गए मूल्य को समायोजित करता है (जैसे WHERE OrderEntryTime BETWEEN '2017-01-11T08:00:00.00.00' AND '2017-01-11T08:59:59.99'
या WHERE OrderEntryTime >= '2017-01-11T08:00:00.00' AND OrderEntryTime < '2017-01-11T09:00:00.00'
)। यह कोड जटिलता जोड़ देगा।