मुझे यह कहकर शुरू करना है कि मैंने कई समान प्रश्नों को देखा है, लेकिन उनमें से सभी Timestamp
और DateTime
फ़ील्ड प्रकार से अनुक्रमण के बिना संबंधित हैं। कम से कम यह मेरी समझ है।MySQL इंटीजर बनाम डेटटाइम इंडेक्स
जैसा कि हम सभी जानते हैं, डेटटाइम की बात होने पर कुछ फायदे हैं। सूचकांक
- दिनांक समय: जब मानदंडों के आधार पर किया जाता है उन्हें एक मिनट के लिए ध्यान नहीं देते हुए, और तालिका के इंजन संभालने
10+ million records
, जो क्वेरी तेजी से प्रदर्शन करेंगे साथInnoDB
हैदूसरे शब्दों में,
DateTime
याint
में यूनिक्स टाइमस्टैम्प के रूप में दिनांक और समय को स्टोर करना बेहतर है? ध्यान रखें कि किसी अंतर्निहित MySQL फ़ंक्शंस का उपयोग करने की आवश्यकता नहीं है।अद्यतन
MySQL 5.1.41 (64 बिट) के साथ परीक्षण किया गया और 10 मिलियन रिकॉर्ड, प्रारंभिक परीक्षण
int
के पक्ष में महत्वपूर्ण गति अंतर दिखाया।tbl_dt
DateTime
औरtbl_int
int
कॉलम के साथ दो टेबल का उपयोग किया गया था। कुछ परिणाम:SELECT SQL_NO_CACHE COUNT(*) FROM `tbl_dt`; +----------+ | COUNT(*) | +----------+ | 10000000 | +----------+ 1 row in set (2 min 10.27 sec) SELECT SQL_NO_CACHE COUNT(*) FROM `tbl_int`; +----------+ | count(*) | +----------+ | 10000000 | +----------+ 1 row in set (25.02 sec) SELECT SQL_NO_CACHE COUNT(*) FROM `tbl_dt` WHERE `created` BETWEEN '2009-01-30' AND '2009-12-30'; +----------+ | COUNT(*) | +----------+ | 835663 | +----------+ 1 row in set (8.41 sec) SELECT SQL_NO_CACHE COUNT(*) FROM `tbl_int` WHERE `created` BETWEEN 1233270000 AND 1262127600; +----------+ | COUNT(*) | +----------+ | 835663 | +----------+ 1 row in set (1.56 sec)
मैं एक तालिका में दोनों क्षेत्रों के साथ एक और अद्यतन के रूप में shantanuo ने सुझाव दिया पोस्ट करेंगे। कई सर्वर क्रैश के बाद
अद्यतन # 2
अंतिम परिणाम :) इंट प्रकार काफी तेजी, कोई बात नहीं क्या क्वेरी चलाने गया था, गति अंतर कम या ज्यादा ऊपर दिए गए परिणामों के रूप में ही किया गया था।
"अजीब" चीज देखी गई थी निष्पादन का समय उतना ही कम था जब दोनों फ़ील्ड प्रकार एक ही टेबल में संग्रहीत होते हैं। ऐसा लगता है कि MySQL यह समझने के लिए पर्याप्त स्मार्ट है कि दिनांक दिनांक और int दोनों में संग्रहीत होने पर मान समान होते हैं। इस विषय पर कोई दस्तावेज नहीं मिला है, इसलिए सिर्फ एक अवलोकन है।
क्या आपने इसे आजमाया? एक त्वरित बेंचमार्क क्यों स्थापित नहीं करें और पता लगाएं? – ircmaxell
हम जिस तरह से बात करते हैं उस पर काम करते हुए, मेरे हार्डवेयर के साथ 10 मिलियन रिकॉर्ड पॉप्युलेट करने में कुछ समय लगता है :) –
सुनिश्चित करें कि आप अपने परीक्षण में SQL_NO_CACHE चुनें – coolgeek