प्राथमिक कुंजी स्तंभ की लंबाई की सीमा क्या है? मैं प्राथमिक कुंजी के रूप में वर्चर का उपयोग करने जा रहा हूं। मुझे कोई जानकारी नहीं मिली है, यह कब तक हो सकता है, क्योंकि PostgreSQL को प्राथमिक कुंजी के रूप में उपयोग किए जाने पर वर्कर सीमा निर्दिष्ट करने की आवश्यकता नहीं है?PostgreSQL प्राथमिक कुंजी लंबाई सीमा
उत्तर
मेरा मानना है कि अधिकतम वर्चर लंबाई एक पोस्टग्रेस कॉन्फ़िगरेशन सेटिंग है। हालांकि, ऐसा लगता है कि यह आकार में 1 जीबी से अधिक नहीं हो सकता है।
कहा गया है कि, यह शायद एक अच्छा विचार नहीं है एक प्राथमिक कुंजी के रूप में एक बड़ी varchar स्तंभ है। एक धारावाहिक या bigserial (http://www.postgresql.org/docs/current/interactive/datatype-numeric.html#DATATYPE-SERIAL)
+1 यह नोट करने के लिए कि वर्चर एक खराब पीके है। संदर्भ तालिकाओं के भीतर उपयोग करते समय यह खराब प्रदर्शन देगा (मैंने आपके लिंक को हालिया पीजी संस्करण में बदल दिया है)। – DrColossos
@DrColossos: यह केवल तभी सच है यदि आप किसी अन्य तालिका में विदेशी कुंजी के रूप में कहा गया वर्चर फ़ील्ड का उपयोग कर रहे हैं। यदि उस क्षेत्र को केवल अनन्य होना चाहिए और न केवल * और * केवल उस तालिका में संदर्भित किया गया है, तो एक संख्यात्मक "प्राथमिक कुंजी" जोड़ना वास्तव में आपको चोट पहुंचाएगा। अब आप दोनों संख्यात्मक पी * और * नहीं NULL varchar स्तंभ पर अतिरिक्त अद्वितीय सूचकांक (क्रम में आवश्यक डेटा अखंडता को सुनिश्चित करने) की भूमि के ऊपर उठाना होगा। विदेशी कुंजी के बारे में बात करते समय यह अच्छी सलाह है, लेकिन कहने के लिए "वर्कर एक बुरा पीके है" भ्रामक है। –
@ मैथ्यू फॉलो अप के लिए धन्यवाद: डी विवरण और पूरी तरह से मेरी टिप्पणी की व्याख्या करने के बारे में पूरी तरह से अवगत नहीं था। हालांकि मैं "[...] संदर्भ तालिकाओं के भीतर उपयोग करते समय [...]" स्पष्ट था कि मेरा मतलब विदेशी कुंजी था लेकिन आपने स्पष्ट रूप से इस विषय में अधिक अंतर्दृष्टि दी थी। अब मैं बेहतर जानता हूँ, धन्यवाद! – DrColossos
बी-पेड़ इंडेक्स में एक मान के लिए अधिकतम लंबाई, जिसमें प्राथमिक कुंजी शामिल है, डिफ़ॉल्ट मंजिल (8192/3) द्वारा बफर पृष्ठ के आकार का एक तिहाई है, = बाइट्स।
आप एक परीक्षण किए हैं।
मैंने टेबल के साथ परीक्षण किए हैं, जिनमें प्राथमिक कुंजी के रूप में सिंगल वर्चर कॉलम है, PostgreSQL 8.4 पर। नतीजा यह है कि मैं 235000 ASCII वर्ण, 116000 पॉलिश diactrical पात्रों स्टोर करने के लिए सक्षम था, है (f.g. 'सी') या 75000 चीनी (f.g. '汉')। बड़े सेट के लिए मुझे एक संदेश मिला है:
BŁĄD: इंडेक्स पंक्ति का आकार 5404 अधिकतम अधिकतम, 2712
से अधिक है, हालांकि, संदेश ने बताया कि:
बफर पृष्ठ के 1/3 से बड़े मानों को अनुक्रमित नहीं किया जा सकता है।
तो मूल्यों, की अनुमति दी गई लेकिन नहीं पूरी स्ट्रिंग विशिष्टता जांच करने के लिए इस्तेमाल किया गया था।
ठीक है, यह उस कॉलम में रखी गई बहुत बड़ी मात्रा में डेटा है। हालांकि, जैसा कि ऊपर बताया गया है, यदि आपको चाबियों के रूप में ऐसे लंबे मूल्यों का उपयोग करना होगा तो आपका डिज़ाइन खराब होगा। आपको कृत्रिम प्राथमिक कुंजी का उपयोग करना चाहिए।
- 1. PostgreSQL समग्र प्राथमिक कुंजी
- 2. PostgreSQL कॉपी कमांड प्राथमिक कुंजी आईडी
- 3. एक समग्र प्राथमिक कुंजी
- 4. PostgreSQL: बड़े डेटाबेस पर प्राथमिक कुंजी को परिभाषित करना
- 5. प्राथमिक कुंजी
- 6. प्राथमिक कुंजी
- 7. प्राथमिक कुंजी
- 8. प्राथमिक कुंजी
- 9. प्राथमिक कुंजी
- 10. कुंजी 'प्राथमिक'
- 11. प्राथमिक कुंजी
- 12. प्राथमिक कुंजी
- 13. प्राथमिक कुंजी
- 14. प्राथमिक कुंजी
- 15. प्राथमिक कुंजी उल्लंघन त्रुटि
- 16. माइस्क्ल - प्राथमिक कुंजी
- 17. अनन्य कुंजी बनाम प्राथमिक कुंजी?
- 18. सीमा लंबाई परिणाम
- 19. ग # स्ट्रिंग लंबाई सीमा
- 20. स्रोत लाइन लंबाई सीमा
- 21. प्राथमिक कुंजी, अद्वितीय कुंजी और उम्मीदवार कुंजी
- 22. हाइबरनेट/जेपीए और पोस्टग्रेएसक्यूएल - प्राथमिक कुंजी?
- 23. सीमा चौड़ाई से छोटी लंबाई सीमा?
- 24. POSTGRESQL विदेशी कुंजी संदर्भ दो अलग-अलग टेबल्स की प्राथमिक कुंजी
- 25. कैसे एक प्राथमिक कुंजी
- 26. SQLite प्राथमिक कुंजी जोड़ें
- 27. कोई प्राथमिक कुंजी
- 28. एक प्राथमिक कुंजी
- 29. SQLAlchemy: यौगिक प्राथमिक कुंजी
- 30. एक समग्र प्राथमिक कुंजी
मुझे लगता है, मैं इस तरह की प्राथमिक कुंजी में बहुत अधिक डेटा डाल सकता हूं, लेकिन यह एक अच्छा विचार नहीं है। सभी उत्तरों के लिए धन्यवाद। – FolksLord