在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中文網其他相關文章!