मुझे 8 300 000 पंक्तियों के साथ एक विशाल तालिका मिली है (संपादित नहीं किया जाएगा और न ही कभी हटाया जाएगा)।MySQL - सीआरसी या एमडी 5 में मेरी अनुक्रमणिका को तेज करें?
मेरा पहला कॉलम कुछ समान दिखता है P300-4312B_X16_S
और प्रविष्टि अद्वितीय नहीं है इसलिए मैं इस क्षेत्र पर एक नियमित INDEX का उपयोग करता हूं।
हालांकि, MySQL एक वर्चर के बजाय बाइनरी फ़ील्ड का उपयोग करके तेज़ी से रास्ता है, इसलिए मैं डेटा को स्टोर करने के लिए BINARY(16)
का उपयोग करके एमडी 5 में अपना इंडेक्स एन्कोड करता हूं।
आज सुबह, मैंने पहली बार सीआरसी 32 का उपयोग करना शुरू कर दिया है और मैंने देखा है कि सीआरसी 32 8 वर्णों का उपयोग करके हेक्साडेसिमल स्ट्रिंग के रूप में आउटपुट हो सकता है।
मेरा प्रश्न: यदि मैं एमडी 5 के बजाय सीआरसी 32 का उपयोग करता हूं, तो यह तेज़ होगा। हालांकि, जब सीआरसी 32 भाग गया है तो दो 000 000 अद्वितीय मूल्य कहें, परिणाम अनूठा होगा या शायद कभी-कभी मेरे पास दो differents स्ट्रिंग के लिए दो बार समान स्ट्रिंग होगी? मैं पूछता हूं क्योंकि परिणाम एमडी 5 की तरह 32 (128 बी) की बजाय केवल 8 अक्षर (32 बी) लंबा है।
धन्यवाद।
कृपया इस पृष्ठ पर एक नज़र डालें: http://www.dslreports.com/forum/remark,13525942 – jcho360
बेशक आपको सीआरसी 32 के साथ और टक्कर मिल जाएगी। यह डेटा अखंडता जांच के लिए एक उपकरण है, एमएस 5 जैसे हैश फ़ंक्शन नहीं। हैश फ़ंक्शंस को जितना संभव हो सके छोटे टकराव (विभिन्न इनपुट के लिए एक ही परिणाम) के रूप में तैयार करने के लिए डिज़ाइन किया गया है। सीआरसी नहीं है। – dmitry
'हालांकि, MySQL एक वर्चर के बजाय बाइनरी फ़ील्ड का उपयोग करके तेज़ी से तरीका है, इसलिए मैं डेटा को स्टोर करने के लिए BINARY (16) का उपयोग करके एमडी 5 में अपना इंडेक्स एन्कोड करता हूं। ऐसा लगता है जैसे आपकी अनुक्रमणिका टूट जाती है। 'वचरर' पर इंडेक्सिंग ठीक काम करना चाहिए .. –