संक्षिप्त उत्तर: कोई व्यावहारिक, प्रदर्शन या भंडारण, अंतर नहीं।
लंबा जवाब:
VARCHAR(3000)
(या किसी अन्य बड़ी सीमा के बीच) या ( MySQL में) अनिवार्य रूप से कोई अंतर नहीं है TEXT
। पूर्व में 3000 वर्णों की छंटनी होगी ; उत्तरार्द्ध 65535 बाइट्स में विभाजित हो जाएगा । (मैं बाइट्स और वर्णों के बीच अंतर करता हूं क्योंकि एक चरित्र कई बाइट्स ले सकता है।)
में छोटी सीमा के लिए VARCHAR
, वहाँ कुछ फायदे हैं TEXT
।
- "छोटा" का अर्थ संस्करण, संदर्भ और, के आधार पर 191, 255, 512, 767, या 3072, आदि है
CHARACTER SET
।
INDEXes
सीमित कर दिया जाता है कि एक स्तंभ को कितना बड़ा किया जा सकता है। (767 या 3072 बाइट्स ; यह संस्करण और सेटिंग्स निर्भर है)
- जटिल द्वारा बनाई गई मध्यवर्ती तालिकाओं
SELECTs
को दो अलग-अलग तरीकों से नियंत्रित किया जाता है - मेमोरी (तेज) या MyISAM (धीमा)। जब 'बड़े' कॉलम शामिल होते हैं, तो धीमी तकनीक स्वचालित रूप से चुन ली जाती है। (संस्करण 8.0 में आने वाले महत्वपूर्ण परिवर्तन; इसलिए यह बुलेट आइटम परिवर्तन के अधीन है।)
- पिछले आइटम से संबंधित, सभी
TEXT
डेटाटिप्स (विपरीत के रूप में VARCHAR
) सीधे MyISAM में कूदते हैं। अर्थात्, TINYTEXT
समतुल्य से उत्पन्न अस्थायी तालिकाओं के लिए स्वचालित रूप से बदतर है VARCHAR
। (लेकिन यह चर्चा को एक तीसरी दिशा में ले जाता है!)
VARBINARY
जैसा है VARCHAR
; BLOB
की तरह है TEXT
।
अन्य उत्तरों के लिए रिबूटल
मूल प्रश्न ने एक बात पूछी (जो उपयोग करने के लिए डेटाटाइप); स्वीकृत उत्तर ने कुछ और उत्तर दिया (ऑफ-रिकॉर्ड स्टोरेज)। वह जवाब अब पुराना हो चुका है।
जब इस धागे को शुरू किया गया था और उत्तर दिया गया था , तो इनोबीडी में केवल दो "पंक्ति प्रारूप" थे। इसके तुरंत बाद, दो और प्रारूप ( DYNAMIC
और COMPRESSED
) पेश किए गए।
के लिए भंडारण स्थान TEXT
और आकारVARCHAR()
पर आधारित है , डेटाटाइप के नाम पर नहीं । एक के लिए अद्यतन / बंद रिकॉर्ड बड़े पाठ / ब्लॉब स्तंभों की भंडारण की चर्चा, देखना यह ।