MySQL への SHA1 ハッシュ値の保存: 最適なフィールド長の選択
SHA1 ハッシュの出力を MySQL データベースに保存する場合、このハッシュ値を保持するフィールドの適切な長さを考慮することが重要です。この記事では、さまざまなオプションを調査し、パフォーマンスとストレージ効率に基づいた推奨事項を提供することで、この問題を検討します。
可変長フィールドと固定長フィールド
可変長データの場合は、VARCHAR魅力的に思えるかもしれない。ただし、SHA1 値は常に 160 ビット長であるため、VARCHAR を使用すると、長さの指定に必要な追加バイトによりスペースが無駄になります。
バイナリ ストレージと 16 進ストレージ
SHA1 アルゴリズムは、1 文字あたり 4 ビットを使用する値を返します。この値を直接保存するには、長さが 40 文字の VARCHAR が必要です。ただし、UNHEX 関数を使用して SHA1 値をバイナリに変換すると、BINARY(20) フィールドを使用して、ストレージ要件を 20 文字に減らすことができます。
パフォーマンスに関する考慮事項
実証されているように、数百万のレコードを保存する場合、BINARY(20) は CHAR(40) よりも効率的であることがわかります。比較テストによる。 BINARY(20) に必要なストレージ領域が少なくなり、データベース操作のパフォーマンスが向上します。
推奨事項
したがって、MySQL に SHA1 ハッシュ値を保存するための推奨されるアプローチは次のとおりです。 BINARY(20) を使用し、UNHEX を使用して 16 進数の SHA1 値をバイナリに変換します。この方法により、ストレージ領域が最適に使用され、データベースの効率的なパフォーマンスが保証されます。
以上がMySQL に SHA1 ハッシュ値を最適に保存する方法: BINARY(20) または VARCHAR(40)?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。