2012-05-10 15 views
9

यदि मुझे पता है कि MySQL में संग्रहीत एक मान हमेशा 32 वर्ण होने वाला है, तो क्या यह VARCHAR के बजाय कॉलम प्रकार CHAR बनाने के लिए बेहतर प्रदर्शन है? वचर और चार्ज का उपयोग करने के बीच प्रदर्शन अंतर क्या है?फिक्स्ड लम्बाई स्ट्रिंग के लिए MYSQL VARCHAR या CHAR

धन्यवाद।

+0

संबंधित http://stackoverflow.com/a/34802591/934739 –

उत्तर

7

मैं CHAR का उपयोग करूंगा।

यदि आप कॉलम पर खोज करने की संभावना रखते हैं, तो CHARVARCHAR पर एक छोटा प्रदर्शन अपग्रेड प्रस्तुत करता है।

चूंकि आपके डेटा आकार को ठीक करने जा रहा है, CHAR का उपयोग करने के लिए कोई नकारात्मक पक्ष नहीं है, क्योंकि VARCHAR समकक्ष एक उपसर्ग के रूप में एक से दो बाइट्स से कहीं भी स्टोर करेगा।

संदर्भ: MySQL CHAR vs VARCHAR

3

VARCHAR स्तंभ use a one or two byte prefix to store the length:

CHAR के विपरीत, VARCHAR मूल्यों एक एक बाइट या दो-बाइट लंबाई उपसर्ग के साथ साथ डेटा के रूप में जमा हो जाती है। लंबाई उपसर्ग मूल्य में बाइट्स की संख्या इंगित करता है। यदि कॉल 255 बाइट्स से अधिक की आवश्यकता हो तो मानों को 255 बाइट्स से अधिक की आवश्यकता होने पर, एक लम्बाई बाइट का उपयोग करता है, तो दो लंबाई बाइट्स की आवश्यकता होती है।

तो, एक वर्चर कॉलम बहुत बड़ा होगा। यदि आप जानते हैं कि यह हमेशा 32 वर्ण होने वाला है, तो CHAR उचित लगता है। बहुत अधिक मामले में जहां आप लंबाई की पूरी तरह से सुनिश्चित नहीं हैं, मैं वचरर के साथ जाऊंगा।

7

अपने पहले सवाल का जवाब, "? यह VARCHAR के बजाय स्तंभ प्रकार CHAR बनाने के लिए बेहतर प्रदर्शन है" ... हां में है। निश्चित रूप से।

आपको हमेशा पता लंबाई तो आप निश्चित रूप से CHAR का उपयोग करना चाहिए 32 होने जा रहा है, तो।

कई अच्छा जवाब भी यहां दिए गए थे: Why would I ever pick CHAR over VARCHAR in SQL?

0

स्ट्रिंग हमेशा 32 वर्ण हो जाएगा (शायद आप एक MD5 हैश हो रही हो) तो चार के लिए जाते हैं (32) तुम हमेशा इस स्क्रिप्ट चला सकते हैं किसी भी तालिका के खिलाफ हैं और देखते हैं mysql क्या कहना

SELECT * FROM table PROCEDURE ANALYSE(); 

यह आपके संपूर्ण पंक्तियों का विश्लेषण और आप कुछ सुझाव दे देंगे है। अच्छी तरह से काम करता है यदि आपके पास अपनी तालिका में एक सभ्य संख्या या पंक्तियां हैं।

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