Saya akan menggunakan VARCHAR
untuk data panjang variabel, tetapi tidak dengan data panjang tetap. Karena nilai SHA-1 selalu 160 bit panjangnya, VARCHAR
hanya akan membuang satu byte tambahan untuk panjang fixed- bidang panjang
.
Dan saya juga tidak akan menyimpan nilai SHA1
sedang kembali. Karena hanya menggunakan 4 bit per karakter dan dengan demikian akan membutuhkan 160/4 =40 karakter. Tetapi jika Anda menggunakan 8 bit per karakter, Anda hanya membutuhkan bidang dengan panjang 160/8 =20 karakter.
Jadi saya sarankan Anda untuk menggunakan BINARY(20)
dan UNHEX
fungsi
untuk mengonversi SHA1
nilai ke biner.
Saya membandingkan persyaratan penyimpanan untuk BINARY(20)
dan 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
);
Dengan jutaan catatan binary(20)
membutuhkan 44,56 juta, sedangkan char(40)
membutuhkan 64,57 juta.InnoDB
mesin.