varchar (255) बनाम लिटिलटेक्स्ट / टिनीब्लोब और varchar (65535) बनाम बूँद / पाठ


92

परिभाषा से:

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

तो इसके आधार पर, मैं निम्न तालिका को पूरा करता हूं:

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

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

क्या यह इसके लिए समान है:

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


VARCHAR को कम मेमोरी ओवरहेड की आवश्यकता होती है, लेकिन वे आमतौर पर पूरी तरह से मेमोरी में पढ़े जाएंगे, इसलिए अंत में VARCHAR को अभी भी अधिक मेमोरी हो सकती है। वे दोनों अलग हैं। आप एक छवि, ऑडियो और अन्य मल्टीमीडिया डेटा की तरह द्विआधारी डेटा को स्टोर करने के लिए BLOB का उपयोग करते हैं। और सीमा तक किसी भी आकार के पाठ को संग्रहीत करने के लिए VARCHAR।
ज़ीउस

जवाबों:


10

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

ध्यान दें कि varchar1 से 65535 चार्ट तक हो सकते हैं।

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

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

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


यह बेहतर है या नहीं यह आपके डेटा एक्सेस पैटर्न पर निर्भर करता है।
बजे माइकल मिऑर

1
कौन सी अलग फाइल हो सकती है?
glglgl

1
Blobs एक अलग फ़ाइल में सहेज नहीं रहे हैं। लेकिन उन्हें बाकी कॉलम से अलग भौतिक स्थान में संग्रहीत किया जाता है।
माइकल मोइर

1
ध्यान दें कि यह न केवल पहुंच की आवृत्ति पर निर्भर करता है, बल्कि यह भी कि डेटा पर कौन से ऑपरेशन किए जा रहे हैं। उदाहरण के लिए, टेबल स्कैन (जो आमतौर पर वैसे भी खराब होता है) के लिए किसी भी क्वेरी की जरूरत होती है, लेकिन स्कैन किए गए डेटा की बड़ी मात्रा से टेक्स्ट का कॉलम खराब नहीं होगा।
माइकल मिऑर

1
मुझे यह भी संदेह है कि यदि डेटा ऑफ-पेज पर संग्रहीत है तो इस कॉलम का उपयोग न करने वाली फाइलें अधिक कुशल हो सकती हैं, हालांकि मुझे यकीन नहीं है कि क्वेरी ऑप्टिमाइज़र इस डेटा को खींचने के लिए पर्याप्त स्मार्ट नहीं है।
माइकल मिऑर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.