2012-04-06 11 views
10

MySQL तालिकाओं को बनाते समय इतने सारे डेवलपर 254 पर वर्कर सेट करते हैं और 255 नहीं करते हैं?MySQL: क्यों वर्चर (254) और वर्कर (255) नहीं?

सबूत है कि ऐसा होता है: mysql varchar 254

+1

शायद कुछ लोग वास्तव में सीमा तक जा रहे हैं! मुुश्किल में जीना! :) –

+0

@ जेसन_वॉर्हेस: मैंने वर्कर (254) भी देखा है और यह सोचकर कि निर्णय लेने की प्रक्रिया क्या थी। मैं इसे लिखता हूं "कोई नहीं था; यह मनमाना मूर्खता/लापरवाही है", लेकिन मैं गलत होने के लिए खुला हूं। इसका उत्तर सुनने में रूचि है। – tenfour

+0

मैं उन डेवलपर्स का निर्माण नहीं कर रहा हूं –

उत्तर

6

varchar फील्ड 255 के बराबर या उससे कम क्षेत्रों के लिए n + 1 बाइट्स की आवश्यकता होती है और खेतों> 255

http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html

यह के लिए आवश्यक n + 2 बाइट्स 255 पर सेट किया जाना चाहिए, मुझे लगता है कि डेवलपर्स सोचते हैं कि वे 254 से अतिरिक्त बाइट बचाएंगे, लेकिन 255 मानक

+1

के साथ एक बेहतर व्यक्ति है, मैं सहमत हूं, मैं कह रहा हूं कि 255 सही है, 254 नहीं। यह वास्तव में आजकल बहुत अधिक मायने रखता नहीं है। जब डीबी पहली बार बाहर आया और हार्ड ड्राइव स्पेस बहुत सीमित था, तो यह एक बड़ा मुद्दा होगा। – Keith

+0

आधा सच: यह स्टोरेज इंजन पर निर्भर करता है। MyIDB के लिए सच है, InnoDB के लिए इतना नहीं, अन्य इंजनों के लिए दिल से नहीं पता। – Konerak

12

आपकी Google क्वेरी ने आपको पहले ही संकेत दिए हैं। पहली हिट में से एक यह है:

https://www.vbulletin.com/forum/project.php?issueid=32655

यह मूल रूप से कहते हैं, कि VARCHAR(255) पर FULLTEXT अनुक्रमित में दो बार VARCHAR(254) की प्रतिलिपि प्राप्त सूचकांक के स्थान की आवश्यकता। और उसके ऊपर कुछ और अन्य bloat।

मुझे लगता है कि यह डेटा तालिका में एक बाइट को सहेजने से कहीं अधिक महत्वपूर्ण है।

+0

गड़बड़ का जवाब, अंत में मुझे इसे साझा करने के लिए, इसके महत्व, thanx को जानना पड़ा। –

+0

याद रखें कि 255 वर्कर के बजाय 254 वर्कर का उपयोग करने के लिए पर्याप्त कारण नहीं है। आप केवल 255 के बजाय 254 अक्षरों को रखने के लिए इंडेक्स बना सकते हैं - इस तरह, आपके कॉलम में आपके इच्छित सभी डेटा होते हैं, और आपकी अनुक्रमणिका फूली नहीं होती है। साथ ही, यह "बग" वास्तव में MySQL सर्वर टीम को सूचित किया जाना चाहिए ताकि वे जांच कर सकें और या तो भ्रम को ठीक या समझा सकें। उस vbulletin पोस्ट में 'phpMyAdmin' स्क्रीनशॉट मुझे बहुत आत्मविश्वास नहीं देते ... – Konerak

+0

@ कोनेरक कृपया अपने आप पर कुछ प्रयोग करने के लिए स्वतंत्र महसूस करें और परिणामों की रिपोर्ट करें। हालांकि: यहां तक ​​कि यदि यह "व्यवहार" (चाहे वह एक बग हो या नहीं) तो तय किया जाएगा _now_ सीमा 254 का उपयोग करने की आदत _very long_ time के लिए चारों ओर चिपक जाएगी। लोग इस तरह हैं। –

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