2012-07-11 5 views
40

संभव डुप्लिकेट:
MySQL: Large VARCHAR vs. TEXT?जब VARCHAR mysql के बजाय में पाठ का उपयोग करने के

VARCHAR के बाद से 65k बाइट्स अब, जब तब TEXTVARCHAR के बजाय इस्तेमाल किया जाना चाहिए हो सकता है?

+1

आप एक से अधिक 65k पात्रों की जरूरत है। :) – GordonM

+0

यह 65k * बाइट्स होना चाहिए *, अक्षर नहीं, मुझे लगता है कि – davek

+0

ओह, हाँ। 65k बाइट्स मेरा प्रश्न अपडेट किया गया। – enchance

उत्तर

57

एक लंबा VARCHARTEXT/BLOB फ़ील्ड InnoDB में उसी तरह से संग्रहीत किया जाता है।

के रूप में भंडारण भावी ब्लॉब, पाठ से अच्छी तरह से जब तक VARCHAR InnoDB द्वारा एक ही तरह से नियंत्रित किया जाता है। यही कारण है कि InnoDB मैनुअल यह कॉल "लंबे कॉलम" बल्कि BLOBs से है।

source

जब तक आप सूचकांक में ये कॉलम की जरूरत है (जिसमें मामले VARCHAR बहुत तेजी से है) वहाँ लंबे क्षेत्रों के लिए TEXT से अधिक VARCHAR उपयोग करने के लिए कोई कारण नहीं है - वहाँ धुन पर MySQL में कुछ इंजन विशिष्ट अनुकूलन कर रहे हैं लंबाई के अनुसार डेटा पुनर्प्राप्ति, और इन का लाभ उठाने के लिए आपको सही कॉलम प्रकार का उपयोग करना चाहिए।

यदि आप MyISAM का उपयोग कर रहे हैं तो इस विषय पर गहन चर्चा here है।


TEXT और BLOB तालिका सिर्फ वास्तविक भंडारण के स्थान पर एक सूचक होने के साथ टेबल पर से जमा हो जाती है।

VARCHAR तालिका के साथ इनलाइन संग्रहित है। आकार उचित होने पर VARCHAR तेज है।

this test के अनुसार, VARCHAR टेक्स्ट जितना तेज़ तीन गुना है।

+8

"लंबा क्षेत्र" परिभाषित करें। –

+3

@PaulBrewczynski> 768 बाइट्स InnoDB के लिए (देखें लिंक शेर पोस्ट) – delrox

+1

एक सुधार: पाठ और ब्लॉब केवल तभी "लंबे" (> 768 बाइट्स) InnoDB में मेज से बाहर जमा हो जाती है, और केवल पूंछ तालिका (समान बंद संग्रहीत किया जाता है वचरर को)। वास्तविक अंतर अधिकतम लंबाई भिन्न है, और VARCHAR के साथ आपको अधिकतम लंबाई (65k की सिस्टम सीमा के साथ लागू) की आपूर्ति करनी होगी। – delrox

4

पाठ अनिश्चित लंबाई के बहुत लंबा तार के लिए इस्तेमाल किया जाना चाहिए। साथ ही, टेक्स्ट फ़ील्ड लौटने वाले प्रश्न उनके VARCHAR समकक्षों की तुलना में बहुत धीमे होते हैं।

+0

मेरे डेटाबेस में, मेरे पास विवरण नामक एक कॉलम है। क्या डेटाटाइप एक वचर या टेक्स्ट होना चाहिए? मुझे यकीन नहीं है कि वर्णन डेटा कितना समय होगा, लेकिन मैं फ्रंट एंड पर शब्द गणना सीमा लगाने की योजना बना रहा हूं, इसलिए इसकी अधिकतम लंबाई होगी। – codeinprogress

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