mysql w3schools वर्कर(255) बनाम टिनटेक्स्ट/टिनीब्लोब और वर्चर(65535) बनाम ब्लॉब/टेक्स्ट




mysql w3schools (2)

इस मामले में varchar बेहतर है।

ध्यान दें कि varchar 1 से 65535 वर्णों से हो सकता है।

VARCHAR कॉलम में मान चर-लंबाई तार हैं। लंबाई को 5.0.3 और 5.0 के बाद MySQL 5.0.3, और 0 से 65,535 से पहले 0 से 255 के मान के रूप में निर्दिष्ट किया जा सकता है। MySQL 5.0.3 और बाद में VARCHAR की प्रभावी अधिकतम लंबाई अधिकतम पंक्ति आकार (65,535 बाइट्स, जो सभी कॉलमों के बीच साझा की जाती है) और वर्णित वर्ण सेट के अधीन है। खंड ई.7.4, "तालिका कॉलम-गणना और पंक्ति-आकार सीमाएं" देखें।

ब्लॉब्स फ़ाइल के एक अलग सेक्शन में सहेजे जाते हैं।
उन्हें डेटा में शामिल करने के लिए एक अतिरिक्त फ़ाइलread की आवश्यकता होती है।
इस कारण से वकार को बहुत तेजी से लाया जाता है।

यदि आपके पास एक बड़ा ब्लॉब है जिसे आप अकसर एक्सेस करते हैं, तो ब्लॉब की तुलना में अधिक समझदारी होती है।
ब्लॉब डेटा को एक अलग (भाग का) फ़ाइल में संग्रहीत करने से आपकी कोर डेटा फ़ाइल छोटी हो सकती है और इस प्रकार तेज़ी से लाया जा सकता है।

परिभाषा से:

वचर: लंबाई की सीमा 1 से 255 वर्ण है। VARCHAR मानों को सॉर्ट और असंवेदनशील फैशन में तुलना की जाती है जब तक कि बिनरी कीवर्ड नहीं दिया जाता है। एक्स + 1 बाइट्स
TINYBLOB, TINYTEXT: 255 (2 ^ 8 - 1) वर्णों की अधिकतम लंबाई के साथ एक बीएलओबी या टेक्स्ट कॉलम x + 1 बाइट

तो इस पर आधारित, मैं निम्नलिखित तालिका creaate:

CREATE TABLE `user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255),
  `lastname` tinytext,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

या यह एक वर्चर या tinytext बनाने के लिए बेहतर है और क्यों ?

क्या यह वही है:

वचर: लंबाई की सीमा> 255 वर्ण है। VARCHAR मानों को सॉर्ट और असंवेदनशील फैशन में तुलना की जाती है जब तक कि बिनरी कीवर्ड नहीं दिया जाता है। एक्स + 2 बाइट्स
ब्लॉब, अधिकतम बीएलबीबी या टेक्स्ट कॉलम 65535 (2 ^ 16 - 1) वर्णों की अधिकतम लंबाई x + 2 बाइट्स


से: http://www.pythian.com/news/7129/text-vs-varchar/

पहली नज़र में, ऐसा लगता है कि टेक्स्ट और वचरर एक ही जानकारी स्टोर कर सकते हैं। हालांकि, टेक्स्ट फ़ील्ड और वर्चर फ़ील्ड के तरीके के बीच मौलिक मतभेद हैं, जो ध्यान में रखना महत्वपूर्ण हैं।

मानक वचरर वास्तव में आईएसओ एसक्यूएल: 2003 मानक का हिस्सा है; TINYTEXT समेत टेक्स्ट डेटा प्रकार गैर-मानक हैं।

स्टोरेज टेक्स्ट डेटा प्रकार टेबल से अलग ऑब्जेक्ट्स के रूप में संग्रहीत होते हैं और परिणाम सेट होते हैं जिनमें उन्हें शामिल किया जाता है। यह भंडारण पारदर्शी है - इसमें कोई फर्क नहीं पड़ता कि टेक्स्ट फ़ील्ड को शामिल करने वाली क्वेरी को VARCHAR फ़ील्ड से बना एक लिखा गया है। चूंकि टेक्स्ट को पंक्ति के हिस्से के रूप में संग्रहीत नहीं किया जाता है, इसलिए टेक्स्ट फ़ील्ड को पुनर्प्राप्त करने के लिए अतिरिक्त [संपादित 1/22] मेमोरी ओवरहेड की आवश्यकता होती है।

अधिकतम VARCHAR लंबाई VARCHAR की अधिकतम पंक्ति लंबाई तालिका की अधिकतम पंक्ति लंबाई से प्रतिबंधित है। अधिकांश स्टोरेज इंजनों के लिए यह 65,535 बाइट है (एनडीबी के पास एक अलग अधिकतम पंक्ति मान है)। सैद्धांतिक रूप से एक वचरर की अधिकतम लंबाई 65,536 बाइट है। ओवरहेड आगे एक वचरर के वास्तविक अधिकतम आकार को सीमित करता है।

VARCHAR फ़ील्ड की लंबाई को संग्रहीत करना 1 बाइट लेता है यदि VARCHAR फ़ील्ड की अधिकतम लंबाई 0-255 बाइट है; यदि यह 255 बाइट से अधिक है, तो लंबाई को स्टोर करने के लिए ओवरहेड 2 बाइट्स है। यदि VARCHAR फ़ील्ड नल मानों को अनुमति देता है, जो अतिरिक्त ओवरहेड जोड़ता है - प्रत्येक तालिका 8 फ़ील्ड के प्रत्येक सेट के लिए ओवरहेड के 1 बाइट का उपयोग करती है जो नल मानों को अनुमति देती है। यदि VARCHAR तालिका में एकमात्र पंक्ति है, और नल मानों की अनुमति नहीं देता है, तो VARCHAR के लिए अधिकतम लंबाई 65,532 बाइट्स है।

ध्यान रखें कि VARCHAR (x) में संख्या वर्णों की संख्या का प्रतिनिधित्व करती है, बाइट्स की संख्या नहीं। इसलिए, आपको केवल VARCHAR (65532) के साथ तालिका को परिभाषित करने में कठिनाई हो सकती है यदि चरित्र सेट बहु-बाइट वर्णों का उपयोग करता है, जैसे कि यूटीएफ -8।

यदि आप एक VARCHAR मान को परिभाषित करने का प्रयास करते हैं जो अनुमति से अधिक है, तो आप 1118 या 1074 जैसी त्रुटि में भाग लेंगे:

ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs.

ERROR 1074 (42000): Column length too big for column 'col_name' (max=[max number here]); use BLOB or TEXT instead

अधिकतम टेक्स्ट लंबाई टेक्स्ट डेटा प्रकार का अधिकतम आकार इस बात पर निर्भर करता है कि किस प्रकार का टेक्स्ट डेटा प्रकार उपयोग किया जा रहा है। क्योंकि वे ऑब्जेक्ट्स के रूप में संग्रहीत होते हैं, तालिका ऑब्जेक्ट में एकमात्र पंक्ति ओवरहेड एक पॉइंटर (8 या 16 बाइट्स) होता है। यहां अधिकतम टेक्स्ट लंबाई की सूची दी गई है, और ओवरहेड (टेक्स्ट ऑब्जेक्ट में):

TINYTEXT – up to 255 bytes, 1 byte overhead

TEXT – up to 64 Kb, 2 bytes overhead

MEDIUMTEXT – up to 16 Mb, 3 bytes overhead

LONGTEXT – up to 4 Gb, 4 bytes overhead

DEFAULT मान MySQL टेक्स्ट डेटा प्रकारों को NULL के अलावा डिफ़ॉल्ट मान रखने की अनुमति नहीं देता है। VARCHAR फ़ील्ड को DEFAULT मान के साथ बनाया जाने की अनुमति है।

निष्कर्ष भंडारण के प्रभावों के कारण, TINYTEXT के बजाय VARCHAR का उपयोग करना बेहतर है।

यदि आपको एक DEFAULT मान होना आवश्यक है जो पूर्ण नहीं है, तो आपको VARCHAR (या CHAR) का उपयोग करना होगा।

यदि आपको लगभग 64 Kb से अधिक तारों को स्टोर करने की आवश्यकता है, तो MEDIUMTEXT या LONGTEXT का उपयोग करें। VARCHAR बड़े मूल्यों को संग्रहीत करने का समर्थन नहीं कर सकता है।

सुनिश्चित करें कि आप बहु-बाइट वर्ण सेट के प्रभावों से अवगत हैं। VARCHAR (255) 255 वर्णों को स्टोर करता है, जो 255 बाइट से अधिक हो सकता है।





mysql