क्या SQLite डेटाबेस में प्राथमिक कुंजी के रूप में टेक्स्ट रखना बुरा है? मैंने सुना है कि प्रदर्शन कारणों से यह बुरा है, क्या यह सच है? और इस तरह के मामले में पंक्ति को वास्तविक प्राथमिक कुंजी के रूप में इस्तेमाल किया जाएगा?SQLite तालिका में प्राथमिक कुंजी के रूप में पाठ का उपयोग करना बुरा है?
उत्तर
क्या SQLite डेटाबेस में प्राथमिक कुंजी के रूप में टेक्स्ट होना बुरा है? मैंने सुना है कि यह प्रदर्शन कारणों से खराब है, क्या यह सच है?
मैं कभी नहीं सुना कि किसी के रूप में प्राथमिक कुंजी तालिका में स्ट्रिंग का इस्तेमाल किया। मेरे लिए (और मैं ईमानदारी से दूसरों के लिए भी आशा करता हूं) बहुत कम प्रदर्शन के साथ बहुत "बदसूरत" अभ्यास।
आप स्ट्रिंग प्राथमिक कुंजी के रूप में आप एक "कुछ" चीजों के बारे में सोचने के लिए की जरूरत है इस्तेमाल करेंगे, तो:
- 3 प्रतीकों का संयोजन हो जाएगा?
- या मुझे 5 प्रतीकों का उपयोग करना चाहिए?
यहाँ, प्रत्येक पंक्ति एक ही प्रारूप (बेशक पठनीयता मुद्दा) होना आवश्यक है और यह भी अद्वितीय हो। ओह! यहाँ अगले "पिग्गी काम" है->
आप कुछ "अद्वितीय स्ट्रिंग जनरेटर" कि अद्वितीय स्ट्रिंग identificator उत्पन्न होगा बनाने की आवश्यकता होगी।
- लंबे समय तक तार
=
स्वचालित रूप से कठिन है और कठिन तुलना करने के लिए - तालिका के आकार मौलिक को जन्म देती है, क्योंकि यह बहुत स्पष्ट है स्ट्रिंग के रूप में और अधिक आकार की है कि:
और यह भी वहाँ अगले मुद्दे हैं पर विचार करने के लिए अच्छा है संख्या
- पंक्तियों की संख्या - यह पागलपन प्राथमिक कुंजी के रूप स्ट्रिंग का उपयोग करने के लिए आप तालिका 1000 पंक्तियों
यह अधिक जटिल विषय है लेकिन मैं यह कहना चाहूंगा कि ठीक है, बहुत छोटी सारणी प्राथमिक कुंजी के रूप में तारों का उपयोग करना संभव होगा (यदि यह एक संवेदना बनाता है) लेकिन यदि आप नुकसान देखेंगे तो यह उपयोग करने के लिए और अधिक बेहतर तकनीक है निश्चित रूप से प्राथमिक कुंजी के रूप में संख्या!
और निष्कर्ष क्या है?
मैं आपको प्राथमिक कुंजी के रूप में स्ट्रिंग का उपयोग करने की सलाह नहीं देता हूं। इसके फायदे के रूप में अधिक नुकसान हैं (यह वास्तव में कुछ फायदा है?)।
प्राथमिक कुंजी के रूप में संख्या का उपयोग अधिक बेहतर है (मुझे सर्वश्रेष्ठ कहने के लिए डर है) अभ्यास।
और क्या इस तरह के मामले में पंक्ति को वास्तविक प्राथमिक कुंजी के रूप में उपयोग किया जाएगा?
यदि आप प्राथमिक रूप से स्ट्रिंग का उपयोग करेंगे।
वास्तविक तारों में शायद ही कभी अद्वितीय हैं।
बेशक , आप कह सकते हैं कि आप पंक्ति में आइटम का नाम से identificator बना सकते हैं, लेकिन यह एक बार फिर से स्पेगेटी कोड है (आइटम एक ही नाम है सकते हैं)।
क्या SQLite डेटाबेस में प्राथमिक कुंजी के रूप में टेक्स्ट रखना बुरा है? मैंने सुना है कि प्रदर्शन कारणों से यह बुरा है, क्या यह सच है?
शुद्धता बिंदु से, TEXT PRIMARY KEY
ठीक है।
प्रदर्शन बिंदु से, INTEGER
कुंजी पसंद करें। लेकिन किसी भी प्रदर्शन के मुद्दे के साथ, यह देखने के लिए स्वयं को मापें कि क्या आपके डेटा में महत्वपूर्ण अंतर है और मामलों का उपयोग करें।
और क्या इस तरह के मामले में पंक्ति को वास्तविक प्राथमिक कुंजी के रूप में उपयोग किया जाएगा?
केवल INTEGER PRIMARY KEY
ROWID
के साथ अलियाड हो जाता है। अन्य प्रकार की प्राथमिक कुंजी नहीं होती है, और WITHOUT ROWID
निर्दिष्ट होने तक अंतर्निहित पूर्णांक पंक्तिबद्ध होगा। Reference।
असली दुनिया में, प्राथमिक कुंजी के रूप में तारों का उपयोग करके यदि हम यूयूआईडी के बारे में बात कर रहे हैं तो बहुत सारे फायदे हैं। अपनी रचना के पल में बिल्कुल "पासपोर्ट" इकाई बनाने में सक्षम होने के कारण एसिंक्रोनस कोड और/या वितरित प्रणाली को बड़े पैमाने पर सरल कर सकते हैं (यदि हम अधिक जटिल मोबाइल क्लाइंट/सर्वर आर्किटेक्चर के बारे में बात कर रहे हैं)।
प्रदर्शन के अनुसार, 10000 प्राथमिक कुंजी लुकअप करने के लिए बेंचमार्क चलाते समय मुझे कोई मापनीय अंतर नहीं मिला, वास्तव में, डेटाबेस इंडेक्स न तो स्टोर करता है और न ही अनुक्रमित खोजों को चलाने के दौरान स्ट्रिंग की तुलना करता है।
- 1. प्राथमिक कुंजी के रूप में "वर्कर" का उपयोग करना? बुरा विचार? या ठीक है?
- 2. SQLite प्राथमिक कुंजी जोड़ें
- 3. आप प्राथमिक कुंजी के रूप में SQLite ROWID का उपयोग क्यों नहीं कर सकते?
- 4. SQLite में प्राथमिक कुंजी के लिए आवश्यक अनुक्रमणिका है?
- 5. तालिका में प्राथमिक कुंजी के रूप में कॉलम सेट करें यदि तालिका में प्राथमिक कुंजी नहीं है
- 6. SQLite रीसेट प्राथमिक कुंजी फ़ील्ड
- 7. क्या व्यापार ऑब्जेक्ट पहचानकर्ता के रूप में डेटाबेस की प्राथमिक कुंजी का उपयोग करना एक बुरा विचार है?
- 8. MySQL - प्राथमिक कुंजी के रूप में विदेशी कुंजी का उपयोग भी
- 9. प्राथमिक कुंजी के रूप में एसक्यूएल एकाधिक विदेशी कुंजी
- 10. प्राथमिक स्टोर/डेटाबेस के रूप में आदि का उपयोग करना?
- 11. सक्रिय रिकॉर्ड का उपयोग कर तालिका के लिए समग्र प्राथमिक कुंजी को परिभाषित करना संभव है?
- 12. सिद्धांत - प्राथमिक कुंजी के बिना तालिका
- 13. रेल माइग्रेशन तालिका प्राथमिक कुंजी
- 14. क्या डेटाबेस डिजाइन में अद्वितीय कुंजी के रूप में rowguid का उपयोग करना अच्छा विचार है?
- 15. तालिका/दृश्य में प्राथमिक कुंजी परिभाषित नहीं है
- 16. MySQL: निर्धारित तालिका के प्राथमिक कुंजी गतिशील रूप
- 17. एक MySQL तालिका प्राथमिक कुंजी के रूप में बड़े (यूयूआईडी) को संभालने का सबसे अच्छा तरीका
- 18. sqlite: क्या मुझे प्राथमिक कुंजी के रूप में टेक्स्ट कॉलम का उपयोग करना चाहिए, या इसे हैश फ़ंक्शन द्वारा कनवर्ट करना चाहिए?
- 19. SQLite समग्र कुंजी (2 विदेशी कुंजी) लिंक तालिका
- 20. विशाल (20 अंक) प्राथमिक कुंजी और SQLite
- 21. क्या मैं SQLite में प्राथमिक कुंजी डेटा प्रकार के रूप में BIGINT के अलावा कुछ भी उपयोग कर सकता हूं?
- 22. क्या प्रश्नों में $ _SESSION ['id'] का उपयोग करना बुरा है?
- 23. लार्वेल 4 यूयूआईडी का उपयोग प्राथमिक कुंजी
- 24. तालिका में SQLite बहु-प्राथमिक कुंजी, उनमें से एक ऑटो वृद्धि
- 25. क्या डेटा मॉडल वर्ग में प्राथमिक कुंजी के रूप में int के बजाय uint का उपयोग करना अच्छा विचार है?
- 26. मौजूदा तालिका में प्राथमिक कुंजी के साथ कॉलम जोड़ना
- 27. PHP MySQL जांचें यदि किसी तालिका में प्राथमिक कुंजी है
- 28. पोस्टग्रेज़ में प्राथमिक कुंजी के रूप में SHA1 हस्ताक्षर संग्रहीत करना SQL
- 29. प्राथमिक कुंजी/क्लस्टेड इंडेक्स में GUID का उपयोग
- 30. विदेशी कुंजी के रूप में समग्र प्राथमिक कुंजी का उपयोग करें
यह तथ्य है कि मेरी स्ट्रिंग किसी सर्वर से आती है, यह अद्वितीय होने की गारंटी है, और हमेशा एक सेट लंबाई इस उत्तर को बदलती है? – mpellegr
@mpellegr आम तौर पर, प्राथमिक कुंजी के रूप में स्ट्रिंग का उपयोग अच्छा अभ्यास नहीं है, मैंने अपने उत्तर में कैसे लिखा;) – Sajmon
मैं एक सारणी बनाने के बारे में हूं जिसमें एक टेक्स्ट कॉलम है जो अद्वितीय, अनुक्रमित और उस तालिका में प्रत्येक क्वेरी है पंक्तियों का संदर्भ देने के लिए इसका इस्तेमाल करेंगे। तालिका को कभी भी विदेशी कुंजी के साथ संदर्भित करने की योजना नहीं है। जब मैंने अपने दिमाग में सवाल आया, तो मैंने लगभग नियमित रूप से एक पूर्णांक आईडी कॉलम जोड़ा, मुझे क्यों चाहिए? तो, इस विशेष मामले में आईडी कॉलम बनाने का कोई कारण है? –