मैं VARCHAR . का उपयोग करूंगा चर लंबाई डेटा के लिए, लेकिन निश्चित लंबाई डेटा के साथ नहीं। क्योंकि SHA-1 मान हमेशा होता है 160 बिट लंबा, VARCHAR बस बर्बाद कर देगा फिक्स्ड की लंबाई के लिए एक अतिरिक्त बाइट- लंबाई फ़ील्ड
।
और मैं मान को SHA1
लौट रहा है। क्योंकि यह प्रति वर्ण केवल 4 बिट का उपयोग करता है और इस प्रकार 160/4 =40 वर्णों की आवश्यकता होगी। लेकिन यदि आप प्रति वर्ण 8 बिट का उपयोग करते हैं, तो आपको केवल 160/8 =20 वर्ण लंबे फ़ील्ड की आवश्यकता होगी।
इसलिए मैं आपको BINARY(20)
और UNHEX समारोह
SHA1 . को कन्वर्ट करने के लिए बाइनरी के लिए मूल्य।
मैंने BINARY(20) . के लिए संग्रहण आवश्यकताओं की तुलना की और CHAR(40) ।
CREATE TABLE `binary` (
`id` int unsigned auto_increment primary key,
`password` binary(20) not null
);
CREATE TABLE `char` (
`id` int unsigned auto_increment primary key,
`password` char(40) not null
);
लाखों रिकॉर्ड के साथ binary(20) 44.56M लेता है, जबकि char(40) 64.57M लेता है।InnoDB इंजन।