मैं 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
इंजन।