bytea
. के रूप में md5 हैश हेक्सा प्रतिनिधित्व के लिए 32 के बजाय केवल 16 बाइट्स का उपयोग करेगा:
create table t (d bytea);
insert into t (d) values
(digest('my_string', 'md5')),
(decode(md5('my_string'), 'hex'));
ऊपर दिए गए दोनों रूप काम करेंगे लेकिन आसान digest
. का उपयोग करने के लिए कार्य के लिए pgcrypto
. को स्थापित करना आवश्यक है सुपरयूज़र के रूप में एक्सटेंशन:
create extension pgcrypto;
digest
का प्रयोग करें फ़ंक्शन या decode
. का संयोजन और md5
एक निश्चित स्ट्रिंग की खोज के लिए ऊपर के रूप में:
select
octet_length(d) ba_length,
pg_column_size(d) ba_column,
encode(d, 'hex') hex_representation,
octet_length(encode(d, 'hex')) h_length,
pg_column_size(encode(d, 'hex')) h_column
from t
where d = digest('my_string', 'md5')
;
ba_length | ba_column | hex_representation | h_length | h_column
-----------+-----------+----------------------------------+----------+----------
16 | 17 | 3d212b21fad7bed63c1fb560c6a5c5d0 | 32 | 36
16 | 17 | 3d212b21fad7bed63c1fb560c6a5c5d0 | 32 | 36
pg_column_size
मूल्य भंडारण आकार है। bytea
. के लिए यह आधे से भी कम है हेक्सा प्रतिनिधित्व की तुलना में।