sql - Storing dates in mysql: Performance comparison between various methods for Date -


अब मेरे मन में तीन विकल्प हैं।

प्रथम - & gt; चार स्तंभ (दिनांक, महीने, वर्ष, दिन) = & gt; 28, 03, 2011, 1 मैं आसानी से इन स्तंभों को खोज और संशोधित कर सकता हूँ बिना mysql तिथियों के अतिरिक्त सीखने।

2 - & gt; एक तारीख का स्तंभ (डीडी-एमएम-य्याय) = & gt; 28-03-2011 यह केवल एक कॉलम की आवश्यकता है, प्रबंधन के लिए आसान है क्योंकि तिथियों की खोज के लिए केवल एक WHERE पैरामीटर है लेकिन मुझे नहीं पता है कि मैं एक विशेष दिन कहने के लिए सभी रिकॉर्ड कैसे खोज सकता हूं। चलिए सभी 28 घंटों के सभी महीनों के सभी महीनों के लिए सभी डेटा या सभी डेटा का कहना है।

3rd - & gt; दो स्तंभ (आज की तिथि के लिए यूनिक्स टाइमस्टैम्प) = & gt; 1827328721, 1 अब, मैं एक समय स्टाम्प के रूप में डेटा को स्टोर कर सकता हूं और आसानी से तारीखों को प्राप्त करने और एक यूनिक्स टाइमस्टैम्प में बदलकर खोजों और तुलना करना और उसके बाद एसक्यूएल में इसका उपयोग कर सकता हूं। दिन के लिए मैं दिन के कॉलम का उपयोग कर सकता हूं।

अब प्रश्न हैं:

  1. इन विधियों के बीच प्रदर्शन कैसे भिन्न होता है?
  2. इन विभिन्न प्रस्तावित समाधानों के लिए चयन, सम्मिलित और अपडेट के लिए प्रश्न कैसे तैयार किए जाएंगे?
  3. आपकी राय में कौन सा सबसे अच्छा है और क्यों?

    कृपया तीनों प्रश्नों को अच्छी तरह से जवाब दें। क्योंकि मुझे यह जानकारी कहीं और नहीं मिल रही है, और मुझे पता है कि स्टैक ओवरफ़्लो में शानदार प्रोग्रामर हैं जो यह बहुत ही ठोस रूप से उत्तर दे सकते हैं। इस सवाल से न केवल मेरे जैसे एक नौसिखिया को फायदा होगा, बल्कि अन्य सभी नए लोगों के बारे में सोचें जो संदर्भ के लिए इसका इस्तेमाल कर सकते हैं।

    स्टैक अतिप्रवाह समुदाय में पहले से धन्यवाद।

    इन विधियों के बीच प्रदर्शन अलग-अलग कैसे होता है?

    यह किस प्रकार के आधार पर बहुत भिन्न होगा आवेदन डेटाबेस का उपयोग कर रहा है

    पहली विधि को डी-सामान्यीकृत दृष्टिकोण माना जा सकता है, लेकिन यह एक अच्छा विचार हो सकता है कि डेटा ओएलएपी आवेदन के लिए उपयोग किया जाता है। उदाहरण के लिए, यदि आपको महीने के किसी विशिष्ट दिन के लिए बड़े पैमाने पर डेटा इकट्ठा करने की आवश्यकता होती है, तो यह डी-सामान्यीकरण उचित हो सकता है ... अन्यथा, यह सिर्फ भंडारण की बर्बादी और बेकार की जटिल होगी।

    तीसरे विकल्प के साथ ... यह सिर्फ दिनांक का एक सामान्यीकृत प्रतिनिधित्व है; यह बहुत सीमित उपयोगों में उचित हो सकता है, लेकिन आम तौर पर यह एक बुरा विचार होगा।

    - संपादित करें -

    डी-सामान्यीकृत करके, मेरा मतलब निम्न है ... < / P>

    मान लें कि आपके पास निम्न फ़ील्ड के साथ एक रिकॉर्ड है ...

      दिनांक दिनांक माह वर्ष 3/28/2011 28 3 2011   < P> और कहते हैं कि आपको 28 वें से 29 तारीख तक दिन को बदलने की आवश्यकता है। इस मामले में, आपको दो फ़ील्ड अपडेट करने की आवश्यकता है, केवल एक के बजाय दिनांक और द डे फ़ील्ड ... अगर आपको हमेशा अपडेट करना याद रखना है, तो यह एक बड़ी समस्या नहीं है। लेकिन यदि आप नहीं करते हैं, तो समय के साथ आप निम्न की तरह कुछ के साथ समाप्त होता है।  
      दिनांक दिन का महीना वर्ष 3/28/2011 29 2 2009   

    तो वास्तविक दिनांक क्या है? एक ही स्थान में जानकारी को संचय करके, आप डेटा में विसंगतियों की संभावना को समाप्त कर सकते हैं।

    - END संपादित करें -

    आपकी राय में सबसे अच्छा कौन है और क्यों?

    जब तक आपका डेटाबेस ओएलएपी के लिए उपयोग नहीं किया जाता है ... मैं सबसे अच्छा विकल्प होने के लिए दूसरा विकल्प मानता हूं।

    कैसे चुनने के लिए प्रश्न , इन विभिन्न प्रस्तावित समाधानों के लिए सम्मिलित और अपडेट किए जा सकते हैं?

    पसंदीदा के लिए, दूसरा विकल्प, यह तुच्छ है

    - दूसरा संपादन -

    आप एक स्ट्रिंग के रूप में तारीख में पास कर सकते हैं, और MySQL इसके अनुसार पार्स करेगा। दिनांक स्वरूप "YYYY-MM-DD HH: mm: SS" है, लेकिन आपको समय निर्दिष्ट करने की आवश्यकता नहीं है अगर आप इसे स्टोर करने की परवाह नहीं करते हैं।

      INSERT tablename (तिथि) मूल्य ('2011-3-28')   

    या, यदि आप वर्तमान तिथि भी जोड़ना चाहते हैं ...

      INSERT में Tablename (तिथि) मूल्य (कर्टेट ())   

    - END संपादित करें -

Comments