2010-03-25 9 views
6

मुझे डेटा को MySQL में स्टोर करने की आवश्यकता है। इसकी लंबाई तय नहीं है, यह 255 या 2 वर्ण लंबा हो सकता है। क्या मुझे अंतरिक्ष बचाने के लिए TINYTEXT या VARCHAR का उपयोग करना चाहिए (गति अप्रासंगिक है)?MySQL में परिवर्तनीय डेटा लंबाई के लिए कौन सा डेटा प्रकार अधिक स्थान बचाता है TINYTEXT या VARCHAR?

उत्तर

5

डेटा संग्रहण स्थान के लिए के रूप में, VARCHAR(255) और TINYTEXT बराबर हैं:

VARCHAR (एम): एल + 1 बाइट्स यदि स्तंभ मान 0 की आवश्यकता होती है - 255 बाइट्स, एल + 2 बाइट्स अगर मूल्यों की आवश्यकता हो सकती 255 बाइट से अधिक।

TINYTEXT: एल + 1 बाइट्स, जहां एल ।

स्रोत: MySQL Reference Manual: Data Storage Requirements


संग्रहण स्थान बराबर, तो आप आगे जब आप एक का उपयोग करना चाहिए पर पढ़ने या अन्य के लिए निम्नलिखित स्टैक ओवरफ़्लो पदों की जाँच करने के लिए चाहते हो सकता है किया जा रहा है:

+0

मुझे लगता है, मैं पूछ रहा हूं कि VARCHAR के बजाय TINYTEXT का उपयोग कब करें? –

+0

आपको बहुत कुछ नहीं करना चाहिए। TINYTEXT एक बीएलओबी क्षेत्र है जो MySQL और स्टोरेज इंजन को अतिरिक्त ओवरहेड प्रोसेसिंग जोड़ता है। –

5

VARCHAR का उपयोग करते समय, आपको उस कॉलम में संग्रहीत अधिकतम वर्णों को निर्दिष्ट करने की आवश्यकता है। इसलिए, यदि आप VARCHAR (255) होने के लिए कॉलम घोषित करते हैं, तो इसका मतलब है कि आप पाठ को 255 वर्णों तक स्टोर कर सकते हैं। यहां महत्वपूर्ण बात यह है कि यदि आप दो अक्षर डालते हैं, तो केवल उन दो अक्षरों को संग्रहीत किया जाएगा, यानी आवंटित स्थान 2 255 नहीं होगा।

TINYTEXT चार टेक्स्ट प्रकारों में से एक है। वे वचरार के समान हैं, लेकिन कुछ अंतर हैं (यह आपके द्वारा उपयोग किए जा रहे MySQL संस्करण पर निर्भर करता है)। लेकिन संस्करण 5.5 के लिए, जब टेक्स्ट प्रकारों की बात आती है तो कुछ सीमाएं होती हैं। पहला यह है कि आपको टेक्स्ट पर इंडेक्स के लिए इंडेक्स उपसर्ग लंबाई निर्दिष्ट करना होगा। और दूसरा यह है कि टेक्स्ट कॉलम में डिफ़ॉल्ट मान नहीं हो सकते हैं।

सामान्य रूप से, टेक्स्ट (अत्यंत) लंबे मूल्यों के लिए उपयोग किया जाना चाहिए। यदि आप स्ट्रिंग का उपयोग करेंगे जो 255 वर्णों तक होगा, तो आपको VARCHAR का उपयोग करना चाहिए।

आशा है कि इससे मदद मिलती है।

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