mysql - बाइनरी collation का उपयोग कर क्या प्रभाव पड़ता है?
(3)
अन्य उत्तरों मतभेदों को अच्छी तरह से समझाते हैं।
कुछ मामलों में बाइनरी संयोजन उपयोगी हो सकता है:
- कॉलम में हेक्साडेसिमल डेटा जैसे पासवर्ड हैंश होते हैं
- आप केवल सटीक मैचों में दिलचस्पी रखते हैं, सॉर्ट नहीं करते हैं
- पहचानकर्ताओं के लिए केवल [a-z0-9_] वर्णों के साथ, आप इसे सॉर्ट करने के लिए भी उपयोग कर सकते हैं
- किसी कारण से आप CHAR () या VARCHAR कॉलम (जैसे टेलीफ़ोन) में संख्याएं संग्रहीत करते हैं
- ज़िप कोड
- UUIDs
- आदि
उन सभी मामलों में आप बाइनरी संयोजन के साथ एक (छोटे) सीपीयू चक्रों को बचा सकते हैं।
इस सवाल का जवाब देते हुए, मैं उस चीज़ के बारे में अनिश्चित हो गया जिसे मैंने पर्याप्त जवाब खोजने के लिए प्रबंधित नहीं किया था।
बाइनरी utf8_bin
और केस असंवेदनशील utf8_general_ci
collations का उपयोग करने के बीच व्यावहारिक अंतर क्या हैं?
मैं तीन देख सकता हूं:
दोनों के पास एक अलग सॉर्टिंग ऑर्डर है;
_bin
के सॉर्टिंग ऑर्डर को वर्णमाला के अंत में कोई_bin
डालने की संभावना है, क्योंकि बाइट मानों की तुलना की जाती है (दाएं?)_bin
में केवल केस संवेदनशील खोज_bin
में कोईA = Ä
समानता नहीं
क्या इसके बारे में जागरूक होने के लिए कोई अन्य अंतर या दुष्प्रभाव हैं?
संदर्भ:
- 9.1.2। MySQL में कैरेक्टर सेट्स और कॉलेशन
- 9.1.7.6। MySQL मैनुअल में _bin और बाइनरी कॉलेशन
- 9.1.7.7। बिनरी ऑपरेटर
इसी तरह के प्रश्न जो इस मुद्दे को संबोधित नहीं करते हैं:
बाइनरी collation आपकी स्ट्रिंग की तुलना बिल्कुल ठीक है क्योंकि सी में strcmp () होगा, अगर अक्षर अलग हैं (चाहे यह मामला या diacritics अंतर हो)। इसके नकारात्मक पक्ष कि सॉर्ट ऑर्डर प्राकृतिक नहीं है।
अप्राकृतिक सॉर्ट ऑर्डर का एक उदाहरण (जैसा कि "बाइनरी" में है): ए, बी, ए, बी प्राकृतिक सॉर्ट ऑर्डर इस मामले में होगा उदाहरण के लिए: ए, ए, बी, बी (एसएमई पत्र की छोटी और पूंजीगत विविधताएं क्रमबद्ध हैं एक दूसरे के बगल में)
बाइनरी collation का व्यावहारिक लाभ इसकी गति है, क्योंकि स्ट्रिंग तुलना बहुत सरल / तेज है। सामान्य स्थिति में, बाइनरी के साथ इंडेक्स क्रमशः अपेक्षित परिणामों का उत्पादन नहीं कर सकता है, हालांकि सटीक मैचों के लिए वे उपयोगी हो सकते हैं।
Utf8_general_ci के साथ, खाते बिना मामले और accentuation लेने के होते हैं। जब आप शब्दों पर प्रश्न पूछने की ज़रूरत होती है तो यह एक अच्छी बात हो सकती है।
Utf8_bin में , मिलान केवल तभी होता है जब तार सख्ती से समान होते हैं। क्वेरी इस तरह तेजी से हैं।