PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

तारों को संग्रहित करने के लिए डेटा प्रकार टेक्स्ट का उपयोग करने का कोई डाउनसाइड्स?

आम तौर पर, नहीं . होता है 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 में वर्ण डेटा के लिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres सबसे अच्छा डेटाबेस है - कारण # 2:लाइसेंस

  2. Django:क्वेरी समूह महीने के अनुसार

  3. PostgreSQL डेटाबेस बनाना

  4. हाइब्रिड क्लाउड पोस्टग्रेएसक्यूएल परिनियोजन युक्तियाँ

  5. मैं एक पोस्टग्रेज तालिका में एक साथ कई मान कैसे सम्मिलित करूं?