MySQL में VARCHAR और CHAR में क्या अंतर है?
मैं एमडी 5 हैश स्टोर करने की कोशिश कर रहा हूं।
MySQL में VARCHAR और CHAR में क्या अंतर है?
मैं एमडी 5 हैश स्टोर करने की कोशिश कर रहा हूं।
जवाबों:
VARCHAR
चर-लंबाई है।
CHAR
निश्चित लंबाई है।
यदि आपकी सामग्री एक निश्चित आकार है, तो आपको बेहतर प्रदर्शन मिलेगा CHAR
।
विस्तृत विवरण के लिए CHAR और VARCHAR प्रकार पर MySQL पृष्ठ देखें (टिप्पणियों को भी पढ़ना सुनिश्चित करें)।
Values in VARCHAR columns are variable-length strings. The length can be specified as a value from 0 to 255 before MySQL 5.0.3, and 0 to 65,535 in 5.0.3 and later versions.
चार बनाम वाराह
CHAR का उपयोग निश्चित लंबाई के आकार के
लिए किया जाता है चर चर का उपयोग चर लंबाई के आकार के लिए किया जाता है।
उदाहरण के लिए
Create table temp
(City CHAR(10),
Street VARCHAR(10));
Insert into temp
values('Pune','Oxford');
select length(city), length(street) from temp;
आउटपुट होगा
length(City) Length(street)
10 6
निष्कर्ष: भंडारण स्थान का उपयोग करने के लिए कुशलता से चर का उपयोग करना चाहिए बजाय अगर चर लंबाई चर है
एक CHAR(x)
स्तंभ केवल हो सकता है वास्तव में x
अक्षर।
एक VARCHAR(x)
कॉलम वर्णों तक हो सकता है x
।
चूंकि आपका एमडी 5 हैश हमेशा एक ही आकार का होगा, इसलिए आपको संभवतः इसका उपयोग करना चाहिए CHAR
।
हालाँकि, आपको पहले स्थान पर MD5 का उपयोग नहीं करना चाहिए; यह कमजोरियों को जानता है।
इसके बजाय SHA2 का उपयोग करें।
यदि आपके पास पासवर्ड हैं, तो आपको bcrypt का उपयोग करना चाहिए।
MySQL में VARCHAR और CHAR में क्या अंतर है?
पहले से दिए गए उत्तर के लिए मैं ओएलटीपी सिस्टम में या बार-बार अपडेट वाले सिस्टम में जोड़ना चाहूंगा कि अपडेट के दौरान CHAR
संभावित VARCHAR
कॉलम के विखंडन के कारण चर आकार के कॉलम के लिए भी उपयोग करने पर विचार करें।
मैं एमडी 5 हैश स्टोर करने की कोशिश कर रहा हूं।
एमडी 5 हैश सबसे अच्छा विकल्प नहीं है अगर सुरक्षा वास्तव में मायने रखती है। हालांकि, यदि आप किसी भी हैश फ़ंक्शन का उपयोग करेंगे, तो BINARY
इसके लिए प्रकार पर विचार करें (जैसे MD5 16-बाइट हैश का उत्पादन करेगा, इसलिए हेक्स अंकों का प्रतिनिधित्व करने वाले 32 वर्णों BINARY(16)
के CHAR(32)
लिए पर्याप्त होगा। यह अधिक स्थान बचाएगा और प्रदर्शन प्रभावी होगा।
यदि वर्ण वर्ण घोषित लंबाई से कम है, तो वर्चर्स रिक्त स्थान को काट देता है, जबकि चार नहीं होगा। चार पैड स्पेस देगा और हमेशा घोषित लंबाई की लंबाई होगी। दक्षता के संदर्भ में, varchar अधिक निपुण है क्योंकि यह वर्णों को अधिक समायोजन की अनुमति देता है। हालांकि, यदि आप चार की सही लंबाई जानते हैं, तो चार कुछ अधिक गति के साथ निष्पादित करेगा।
आज अधिकांश RDBMS में, वे समानार्थक शब्द हैं। हालाँकि उन प्रणालियों के लिए जिनमें अभी भी एक अंतर है, एक CHAR फ़ील्ड को निश्चित-चौड़ाई वाले स्तंभ के रूप में संग्रहीत किया जाता है। यदि आप इसे CHAR (10) के रूप में परिभाषित करते हैं, तो 10 वर्ण तालिका में लिखे जाते हैं, जहां "पेडिंग" (आमतौर पर रिक्त स्थान) का उपयोग किसी भी स्थान को भरने के लिए किया जाता है जो डेटा का उपयोग नहीं करता है। उदाहरण के लिए, "बॉब" को सहेजना ("बॉब" +7 रिक्त स्थान) के रूप में सहेजा जाएगा। एक VARCHAR (चर वर्ण) स्तंभ अतिरिक्त स्थान को बर्बाद किए बिना डेटा को संग्रहीत करने के लिए है जो एक CHAR स्तंभ करता है।
हमेशा की तरह, विकिपीडिया जोर से बोलता है।
CHAR एक निश्चित लंबाई क्षेत्र है; VARCHAR एक चर लंबाई क्षेत्र है। यदि आप नामों के रूप में बेतहाशा परिवर्तनशील लंबाई के साथ तार लगा रहे हैं, तो एक VARCHAR का उपयोग करें, यदि लंबाई हमेशा समान होती है, तो CHAR का उपयोग करें क्योंकि यह थोड़ा अधिक आकार-कुशल है, और थोड़ा तेज भी है।
CHAR निश्चित लंबाई है और VARCHAR परिवर्तनशील लंबाई है। CHAR हमेशा प्रति एंट्री स्पेस की समान मात्रा का उपयोग करता है, जबकि VARCHAR केवल वास्तविक टेक्स्ट को स्टोर करने के लिए आवश्यक राशि का उपयोग करता है।
चर एक निश्चित-लंबाई वाला वर्ण डेटा प्रकार है, चरचर एक चर-लंबाई वर्ण डेटा प्रकार है।
चूँकि char एक निश्चित लंबाई का डेटा प्रकार है, char मान का संग्रहण आकार इस कॉलम के अधिकतम आकार के बराबर होता है। चूंकि varchar एक चर-लंबाई डेटा प्रकार है, इसलिए varchar value का संग्रहण आकार दर्ज किए गए डेटा की वास्तविक लंबाई है, न कि इस कॉलम के लिए अधिकतम आकार।
जब आप कॉलम में डेटा प्रविष्टियाँ समान आकार के होने की उम्मीद करते हैं तो आप चार का उपयोग कर सकते हैं। जब आप किसी स्तंभ में डेटा प्रविष्टियों के आकार में काफी भिन्नता की अपेक्षा करते हैं, तो आप varchar का उपयोग कर सकते हैं।
उच्च प्रदर्शन MySQL पुस्तक के अनुसार :
VARCHAR वैरिएबल-लेंथ कैरेक्टर स्ट्रिंग्स को स्टोर करता है और यह सबसे आम स्ट्रिंग डेटा टाइप है। इसे निश्चित-लंबाई प्रकारों की तुलना में कम संग्रहण स्थान की आवश्यकता हो सकती है, क्योंकि यह केवल उतनी ही जगह का उपयोग करता है जितनी इसे जरूरत होती है (यानी, कम स्थान का उपयोग छोटे मूल्यों को संग्रहीत करने के लिए किया जाता है)। अपवाद ROW_FORMAT = FIXED के साथ बनाई गई एक MyISAM तालिका है, जो प्रत्येक पंक्ति के लिए डिस्क पर एक निश्चित स्थान का उपयोग करती है और इस प्रकार अंतरिक्ष को बर्बाद कर सकती है। VARCHAR प्रदर्शन में मदद करता है क्योंकि यह अंतरिक्ष बचाता है।
CHAR निश्चित है-लंबाई: MySQL हमेशा निर्दिष्ट वर्णों के लिए पर्याप्त स्थान आवंटित करता है। CHAR मान संग्रहीत करते समय, MySQL किसी भी अनुगामी रिक्त स्थान को निकालता है। (यह MySQL 4.1 में VARCHAR का भी सच था और पुराने संस्करण- CHAR और VAR CHAR तार्किक रूप से समान थे और केवल संग्रहण प्रारूप में भिन्न थे।) मान तुलना के लिए आवश्यकतानुसार रिक्त स्थान के साथ गद्देदार होते हैं।
VARCHAR
जरूरत पड़ने पर विरोध के रूप में प्रदर्शन को कम करने के लिए आवश्यक रूप से स्मृति को गतिशील रूप से आवंटित करने की आवश्यकता है CHAR
?
चार या वर्चर- इसका उपयोग टेक्सिक डेटा दर्ज करने के लिए किया जाता है जहां लंबाई को कोष्ठक में दर्शाया जा सकता है जैसे- नाम चार (20)
(
और)
कोष्ठकों कर रहे हैं, नहीं कोष्ठक।
(
और )
कोष्ठक, और कई ब्रिट्स को शायद यह भी महसूस नहीं होता है कि अंग्रेजी की बोलियाँ हैं जिनमें "कोष्ठक" शब्द एक विराम चिह्न को संदर्भित कर सकता है। "कोष्ठक" को "कोष्ठक" को प्राथमिकता देने के लिए एक मजबूत मामला है - यह संभवतया, संतुलन पर है, प्रोग्रामर के अंतरराष्ट्रीय दर्शकों को लक्षित करते समय अधिकतम स्पष्ट विकल्प - लेकिन यह सिर्फ "कोष्ठक" की तुलना में अधिक जटिल मामला है।