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.