2011-01-14 11 views
7

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

क्या यह अन्य डेटाबेस के साथ भी आम है, या 255 के साथ अधिकतम मूल्य के रूप में चिपकना और इसके ऊपर डेटाटाइप बदलना सबसे अच्छा है?

+6

शायद इस प्रश्न को देखना चाहते हैं: http://stackoverflow.com/questions/2023481/mysql-large-varchar-vs-text –

+0

धन्यवाद। मेरे प्रश्न के लिए पर्याप्त बंद करो। – ahanson

उत्तर

4

उत्तर के रूप में @Eric ने इंगित किया है, VARCHARs तालिका में संग्रहीत हैं जबकि टेक्स्ट एक अलग फ़ाइल में संग्रहीत हैं - एक तालिका संरचना को डिजाइन करते समय आपको ध्यान में रखना एकमात्र वास्तव में महत्वपूर्ण बिंदु पंक्ति आकार सीमा है (MySQL सीमा प्रत्येक पंक्ति/रिकॉर्ड से 65 केबी)।

मेरा सुझाव है कि आप "एक-लाइनर" के लिए VARCHARs का उपयोग करें - जो कुछ भी उसके डेटा स्रोत के रूप में टेक्स्ट इनपुट है।

6

मेरी राय में, मैं दृष्टिकोण से हतोत्साहित होगा। जब आपको 255 से अधिक वर्णों की आवश्यकता होती है, तो टेक्स्ट का उपयोग कुछ और उपयुक्त होते हैं।

अद्यतन: वर्चर अब 65535 बाइट तक सीमित है, लेकिन MySQL में एक पंक्ति 65535 बाइट्स से अधिक नहीं हो सकती है।

आपको यह जानना होगा कि VARCHAR और ऐसे फ़ील्ड सीधे आपके डेटाबेस में संग्रहीत किए जाते हैं जब टेक्स्ट उदाहरण के लिए पंक्ति को बाहर रखा जाएगा, जिससे पंक्ति के अंदर एक पॉइंटर लिंक हो रहा है।

तो यदि आप बड़े VARCHAR का उपयोग करना चाहते हैं, तो सुनिश्चित करें कि वे बहुत बड़े नहीं होंगे और पंक्ति में शेष डेटा में हस्तक्षेप नहीं करेंगे।

उदाहरण के लिए, 65K char तक हो सकता है जो mutltiple VARCHAR फ़ील्ड होने का एक बुरा विचार होगा।

+2

क्यों समझाने की देखभाल क्यों? यह नहीं कि आप गलत हैं, बस यह एक बेहतर जवाब के लिए होगा। – dkarp

+0

मैंने अपना anwser अपडेट किया। –

5

VARCHAR कॉलम 65,535 बाइट तक सीमित है, जिसका मतलब यह नहीं है कि आप किस चरित्र सेट का उपयोग कर रहे हैं, इसके आधार पर 65,535 वर्ण नहीं हैं।

यदि आप latin1 वर्ण सेट का उपयोग कर रहे हैं जो प्रति चरित्र एक बाइट है, तो आप किसी भी समस्या में भाग नहीं पाएंगे क्योंकि स्ट्रिंग की लंबाई आवश्यक संग्रहण की मात्रा के समान है।

यदि आप एक वर्ण सेट का उपयोग करते हैं जो बहु-बाइट वर्णों को संग्रहीत करता है तो आप केवल लंबाई निर्धारित कर सकते हैं कि चरित्र सेट क्या अनुमति देगा। उदाहरण के लिए utf8 वर्ण सेट की अधिकतम लंबाई 21,844 वर्ण हो सकती है।

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