首頁  >  文章  >  資料庫  >  在 MySQL 中儲存 SHA1 雜湊值:VARCHAR 還是 BINARY?

在 MySQL 中儲存 SHA1 雜湊值:VARCHAR 還是 BINARY?

Linda Hamilton
Linda Hamilton原創
2024-11-23 22:33:14503瀏覽

To Store a SHA1 Hash in MySQL: VARCHAR or BINARY?

在MySQL 中儲存SHA1 雜湊值:VARCHAR 與BINARY

在MySQL 資料庫中儲存SHA1 雜湊結果時,適當的必須仔細考慮字段類型和長度。與常見做法相反,為此目的使用 VARCHAR 欄位效率很低。

VARCHAR 與 BINARY

SHA1 雜湊值始終為 160 位長。 VARCHAR 欄位是為可變長度資料設計的,但它們為欄位長度引入了一個位元組的開銷。因此,對於固定長度值(例如 SHA1 雜湊)使用 VARCHAR 是不必要的。

另一方面,二進位欄位儲存二進位數據,沒有任何開銷。它們非常適合 SHA1 雜湊等固定長度值。

字元表示

SHA1 雜湊通常表示為十六進位字串,每個字元使用 4 位元。要將 SHA1 雜湊的十六進位表示形式儲存在 VARCHAR 欄位中,需要 160/4 = 40 個字元。然而,二進位字段每個字元使用 8 位,允許將相同的雜湊儲存在 160/8 = 20 個字元的欄位中。

建議方法

它是建議使用 BINARY(20) 在 MySQL 中儲存 SHA1 雜湊值。此欄位類型消除了與 VARCHAR 相關的開銷,並允許有效儲存雜湊。此外,UNHEX 函數可用於將雜湊的十六進位表示形式轉換為二進位,然後將其儲存到資料庫中。

儲存比較

儲存要求的比較顯示 BINARY(20) 比 CHAR(40) 儲存 SHA1 雜湊值更有效。例如,對於數百萬筆記錄,BINARY(20) 需要大約 44.56M 的儲存空間,而 CHAR(40) 需要 64.57M 的儲存空間。隨著資料集的增大,這種差異變得更加明顯。

以上是在 MySQL 中儲存 SHA1 雜湊值:VARCHAR 還是 BINARY?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn