2010-02-18 13 views
34

MySQL में VARCHAR (255) और TINYTEXT स्ट्रिंग प्रकारों के बीच क्या अंतर है?MySQL में VARCHAR (255) और TINYTEXT स्ट्रिंग प्रकारों के बीच क्या अंतर है?

उनमें से प्रत्येक स्ट्रिंग को 255 वर्णों की अधिकतम लंबाई के साथ स्टोर करने की अनुमति देता है। भंडारण आवश्यकताओं भी वही हैं। मुझे एक दूसरे को कब पसंद करना चाहिए?

उत्तर

36

आप DEFAULT मान को TINYTEXT पर असाइन नहीं कर सकते हैं और आप बाद में एक अपरिवर्तित अनुक्रमणिका नहीं बना सकते हैं।

आंतरिक रूप से, TEXT (TINYTEXT) कॉलम को संभालने के लिए स्मृति में अतिरिक्त ऑब्जेक्ट आवंटित किए जाते हैं जो बड़े रिकॉर्डसेट पर स्मृति विखंडन का कारण बन सकते हैं।

ध्यान दें कि यह केवल रिकॉर्ड्स में कॉलम के आंतरिक प्रतिनिधित्व से संबंधित है, न कि डिस्क पर उन्हें कैसे संग्रहीत किया जाता है।

+0

क्या, जब mysql को अस्थायी तालिका की आवश्यकता होती है, यदि कोई ब्लॉब या टेक्स्ट (इंक। tinytext) अस्थायी तालिका – andho

+8

बनाने के लिए स्मृति की बजाय डिस्क का उपयोग करता है जो खोज करने के लिए सस्ता (समय और CPU चक्र) है? – Medorator

5

VARCHAR का उपयोग करके आप NULL या NOT NULL करने के लिए स्तंभ सेट कर सकते हैं और आप DEFAULT मूल्य निर्धारित कर सकते हैं, लेकिन TEXT के साथ नहीं। VARCHAR का उपयोग करें यदि आपको एक या दोनों सुविधा की आवश्यकता है, NULL और DEFAULT

varchar में
+3

TINYTEXT कॉलम भी पूर्ण हो सकता है। – planetp

+0

लेकिन डिफ़ॉल्ट नहीं –

-2

आप एक चरित्र की लंबाई सेट करने tanytext में ऐसा कुछ नहीं है, जबकि यह पूर्व के लिए डेटा बेस की स्मृति बचाता है: पते के लिए

आप से varchar (50) को परिभाषित करने के लिए है अपने पता 50 वर्णक या उससे कम खराब स्थिति हो सकती है, यह 50 वर्ण से अधिक है, यह चरित्र वर्चर की सीमा है यदि चरित्र 50 से कम है, तो इस मामले में 50 वर्ण स्मृति मेमोरी बढ़ जाती है

तो tanytext का उपयोग करें यह चरित्र की लंबाई को चरित्र के आकार पर निर्भर करता है ताकि स्मृति बचाई जा सके

+0

यह गलत है। एक वर्चर केवल वर्तमान में संग्रहीत की गई लंबाई (चार के विपरीत) की लंबाई जितनी मेमोरी का उपयोग करता है। Http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html – viblo

+0

हाय viblo, varchar में हम पूर्व स्ट्रिंग की लंबाई को परिभाषित करते हैं, यह पूर्वनिर्धारित सीमा तक स्मृति लेता है। यह tanytext के मामले में नहीं है। – nilesh

+0

मैं समझ नहीं पा रहा हूं कि आपका क्या मतलब है। MySQL दस्तावेज़ों का कहना है कि एक वर्चर को "एल + 1 बाइट्स की आवश्यकता होती है यदि कॉलम मानों को 0 - 255 बाइट्स, एल + 2 बाइट्स की आवश्यकता होती है, यदि मानों को 255 बाइट्स से अधिक की आवश्यकता हो सकती है" जहां एल पाठ की वास्तविक लंबाई संग्रहीत की जाती है, न कि आप वर्चर को अधिकतम लंबाई के रूप में परिभाषित किया गया है। – viblo

संबंधित मुद्दे