2011-09-04 9 views
5

हमें एक MySQL (InnoDB) तालिका में कई पंक्तियों को स्टोर करने की आवश्यकता है, उनमें से सभी को प्राथमिक कुंजी के रूप में 8-बाइट बाइनरी स्ट्रिंग है। मैं गीला सोच रहा था कि बिगिनट कॉलम प्रकार (जिसमें 64-बिट, इस प्रकार 8-बाइट, पूर्णांक) या बिनरी (8) शामिल है, जो निश्चित लंबाई है।MySQL: प्राथमिक कुंजी 8-बाइट स्ट्रिंग है। क्या बिगिनट या बिनरी (8) का उपयोग करना बेहतर है?

चूंकि हम उन अनुप्रयोगों को हमारे आवेदन में तारों के रूप में उपयोग कर रहे हैं, और संख्याओं के अनुसार, उन्हें बाइनरी तारों के रूप में संग्रहीत करने से मुझे अधिक सुसंगत लगता है। हालांकि, मुझे आश्चर्य है कि इसके साथ प्रदर्शन समस्याएं हैं या नहीं। इससे क्या फ़र्क पड़ता है?

यदि यह महत्वपूर्ण है, तो हम हेक्स नोटेशन (जैसे page_id = 0x1122334455667788) का उपयोग करके इन आईडी को पढ़/संग्रहीत कर रहे हैं। हम किसी भी तरह से प्रश्नों में पूर्णांक का उपयोग नहीं करेंगे, क्योंकि हम एक PHP अनुप्रयोग लिख रहे हैं और, जैसा कि आप निश्चित रूप से जानते हैं, वहां "हस्ताक्षरित लंबे लंबे int" प्रकार नहीं हैं, इसलिए सभी पूर्णांक मशीन-निर्भर आकार हैं।

उत्तर

2

यदि यह आपके डिज़ाइन से मेल खाता है तो मैं बाइनरी (8) का उपयोग करूंगा।

अन्यथा आपके पास हमेशा प्रदर्शन या जटिलता में रूपांतरण ओवरहेड होगा। RDBMS स्तर

पर प्रकारों के बीच अधिक (यदि कोई हो) अंतर नहीं होगा