आम तौर पर, नहीं . होता है text
using का उपयोग करने के लिए नकारात्मक पक्ष प्रदर्शन/स्मृति के मामले में। इसके विपरीत:text
इष्टतम है। अन्य प्रकारों में कमोबेश प्रासंगिक कमियां हैं। text
पोस्टग्रेज टाइप सिस्टम में स्ट्रिंग प्रकारों के बीच शाब्दिक रूप से "पसंदीदा" प्रकार है, जो फ़ंक्शन या ऑपरेटर प्रकार रिज़ॉल्यूशन को प्रभावित कर सकता है।
विशेष रूप से, कभी नहीं <स्ट्राइक> char(n)
. का उपयोग करें स्ट्राइक> (उपनाम <स्ट्राइक> character(n)
के लिए स्ट्राइक> ), जब तक आप नहीं जानते कि आप क्या कर रहे हैं। char
या character
character(1)
. के लिए संक्षिप्त हैं , तो सभी समान। आंतरिक नाम bpchar
. है ("रिक्त-गद्देदार चरित्र" के सामने खड़ा है)। प्रकार केवल पुराने कोड और मानकों के साथ संगतता के लिए है। यह आजकल बहुत कम समझ में आता है, स्मृति को बर्बाद करता है और परेशानी का कारण बन सकता है:
- वर्चर की तुलना चार से करें
- पोस्टग्रेज SQL में स्ट्रिंग फ़ील्ड की लंबाई
आप varchar(n)
. का उपयोग कर सकते हैं लंबाई संशोधक के साथ (उपनाम character varying(n)
के लिए ) लेकिन <स्ट्राइक>varchar(255)
स्ट्राइक> आम तौर पर अन्य आरडीबीएमएस से की गई गलतफहमी को इंगित करता है जहां यह प्रदर्शन के लिए स्थानीय इष्टतम हो सकता है। Postgres में, लंबाई संशोधक (255)
इसका कोई विशेष अर्थ नहीं है और शायद ही कभी समझ में आता है।
- क्या मुझे VARCHAR कॉलम में एक मनमाना लंबाई सीमा जोड़नी चाहिए?
varchar(n)
. के लंबाई संशोधक को बदलने का प्रयास करते समय पुराने संस्करणों ने विभिन्न समस्याओं का कारण बना बाद में। उनमें से अधिकांश को आधुनिक पोस्टग्रेज में कम कर दिया गया है, लेकिन text
या varchar
(उपनाम character varying
. के लिए ) लंबाई विनिर्देशक के बिना (और एक CHECK
इसके बजाय बाधा) इनमें से कोई भी समस्या कभी नहीं थी।
एक CHECK
बाधा उतनी ही तेज है और कॉलम प्रकार पर निर्भर विचारों, कार्यों, एफके बाधाओं आदि के साथ परेशानी पैदा करने की संभावना कम है। और यह अधिकतम वर्ण लंबाई को लागू करने से कहीं अधिक कर सकता है - कुछ भी जिसे आप बूलियन अभिव्यक्ति में डाल सकते हैं। देखें:
- दृश्यों में प्रयुक्त PostgreSQL कॉलम बदलें
अंत में, "char"
. भी है (दोहरे उद्धरणों के साथ):एक एकल ASCII अक्षर के लिए 1-बाइट डेटा प्रकार सस्ते आंतरिक गणना प्रकार के रूप में उपयोग किया जाता है।
मैं शायद ही कभी text
. के अलावा कुछ भी उपयोग करता हूं Postgres में वर्ण डेटा के लिए।