多くの MD5 ハッシュを格納する DB テーブルがあります (そして、それらが 100% 一意ではないことはわかっています...)。そこでは、これらの文字列に対する多くの比較クエリがあります。このテーブルは、5M を超える行で非常に大きくなる可能性があります。
私の質問は次のとおりです。データを 16 進数の文字列として保持するのが賢明ですか、それとも 16 進数を 2 進数または 10 進数に変換してクエリを改善する必要がありますか?
テキストでは 8 ビット (完全な文字) を使用して 4 ビットのデータをエンコードするため、バイナリの方が高速である可能性があります。しかし、違いがあったとしても、実際に多くのことに気付くとは思えません。
私がいるところでは、非常によく似たテーブルがあります。請求目的で医師からの口述テキストをテキスト列に保持します (まだ SQL Server 2000 上にあります)。私たちは 400 万件のレコードに近づいており、医師が検証とコンプライアンスの目的でまったく同じことを 2 回口述した重複をチェックできるようにする必要があります。口述は複数のページを実行できるため、トリガーを介した挿入時に入力されるハッシュ列もあります。列は char(32) 型です。
バイナリ データは、手動で処理する場合や、データをテキスト ファイルなどにダンプする必要がある場合は、面倒です。
ハッシュ列にインデックスを付けるだけで問題ありません。