MySQL: बड़े VARCHAR बनाम पाठ?




text messages (3)

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

क्या VARCHAR (3000) या टेक्स्ट के साथ जाने के लिए कोई तर्क है? VARCHAR (3000) लिखने के बारे में कुछ है जो कुछ हद तक प्रतिद्वंद्वी महसूस करता है। मैं स्टैक ओवरफ़्लो पर अन्य समान पदों के माध्यम से रहा हूं लेकिन इस तरह के सामान्य संदेश संग्रह के लिए विशिष्ट विचार प्राप्त करना अच्छा होगा।


अस्वीकरण: मैं एक MySQL विशेषज्ञ नहीं हूं ... लेकिन यह मुद्दों की मेरी समझ है।

मुझे लगता है कि टेक्स्ट MySQL पंक्ति के बाहर संग्रहीत है, जबकि मुझे लगता है कि VARCHAR पंक्ति के हिस्से के रूप में संग्रहीत किया जाता है। MySQL पंक्तियों के लिए अधिकतम पंक्ति लंबाई है .. इसलिए आप VARCHAR का उपयोग करके पंक्ति में कितना डेटा स्टोर कर सकते हैं सीमित कर सकते हैं।

वक्रार के कारण पंक्ति का हिस्सा बनने के कारण, मुझे संदेह है कि उस क्षेत्र को देखने वाले प्रश्न टेक्स्ट टेक्स्ट का उपयोग करने वालों की तुलना में थोड़ा तेज होंगे।


क्या आप भविष्यवाणी कर सकते हैं कि उपयोगकर्ता इनपुट कब तक होगा?

VARCHAR (एक्स)

केस: उपयोगकर्ता का नाम, ईमेल, देश, विषय, पासवर्ड

पाठ

केस: संदेश, ईमेल, टिप्पणियां, स्वरूपित पाठ, एचटीएमएल, कोड, छवियों, लिंक

MEDIUMTEXT

मामला: बड़े जेसन निकायों, लघु से मध्यम लंबाई की किताबें, सीएसवी तार

LongText

केस: पाठ्यपुस्तक, कार्यक्रम, लॉग फाइलों के वर्षों, हैरी कुम्हार और आग का गोलाकार, वैज्ञानिक अनुसंधान लॉगिंग


सर्वोत्तम अभ्यास को स्पष्ट करने के लिए:

  1. पाठ प्रारूप संदेशों को लगभग हमेशा टेक्स्ट के रूप में संग्रहीत किया जाना चाहिए (वे मनमाने ढंग से लंबे समय तक समाप्त होते हैं)

  2. स्ट्रिंग विशेषताओं को VARCHAR (गंतव्य उपयोगकर्ता नाम, विषय, आदि ...) के रूप में संग्रहीत किया जाना चाहिए।

मैं समझता हूं कि आपके पास फ्रंट एंड सीमा है, जो तब तक बढ़िया नहीं है जब तक यह नहीं है। * grin * चाल डीबी के बारे में सोचने के लिए है जो उससे जुड़े अनुप्रयोगों से अलग है। सिर्फ इसलिए कि एक एप्लिकेशन डेटा पर एक सीमा डालता है, इसका मतलब यह नहीं है कि डेटा आंतरिक रूप से सीमित है।

संदेशों के बारे में यह क्या है जो उन्हें 3000 वर्णों से अधिक नहीं होने के लिए मजबूर करता है? यदि यह सिर्फ एक मनमाना अनुप्रयोग बाधा है (कहें, एक टेक्स्ट बॉक्स या कुछ के लिए), डेटा परत पर एक TEXT फ़ील्ड का उपयोग करें।







varchar