PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

postgresql:tipe data untuk intisari pesan md5?

Hash md5 sebagai bytea hanya akan menggunakan 16 byte alih-alih 32 untuk representasi heksa:

create table t (d bytea);
insert into t (d) values
    (digest('my_string', 'md5')),
    (decode(md5('my_string'), 'hex'));

Kedua formulir di atas akan berfungsi tetapi untuk menggunakan digest yang lebih sederhana fungsinya perlu menginstal pgcrypto ekstensi sebagai pengguna super:

create extension pgcrypto;

Gunakan digest fungsi atau kombinasi decode dan md5 seperti di atas untuk mencari string tertentu:

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 nilai adalah ukuran penyimpanan. Ini kurang dari setengah untuk bytea dibandingkan dengan representasi heksa.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiat Penyesuaian Kinerja PostgreSQL

  2. Bagaimana cara mendapatkan data lokal ke dalam database hanya-baca menggunakan dplyr?

  3. Periksa apakah tipe yang ditentukan pengguna sudah ada di PostgreSQL

  4. Permintaan hibah untuk tabel di postgres

  5. bagaimana cara menyimpan PostgreSQL jsonb menggunakan SpringBoot + JPA?