データベーステーブルに、テーブルのキーとして定義された列「名前」があるとします。通常の名前の値は、"Bill"、"Elizabeth"、"Bob"、"Alice" です。テーブルの検索も名前キーによって行われます。
値をハッシュすると、何らかの方法で操作が最適化されますか? つまり、名前のハッシュ値として各名前を入力します (MD5 - 32 ビットと仮定します)。
もしそうなら、これはクライアントが処理するものではなく、データベースの機能であるべきではありませんか?
データベーステーブルに、テーブルのキーとして定義された列「名前」があるとします。通常の名前の値は、"Bill"、"Elizabeth"、"Bob"、"Alice" です。テーブルの検索も名前キーによって行われます。
値をハッシュすると、何らかの方法で操作が最適化されますか? つまり、名前のハッシュ値として各名前を入力します (MD5 - 32 ビットと仮定します)。
もしそうなら、これはクライアントが処理するものではなく、データベースの機能であるべきではありませんか?
データベースが主キーのインデックスを生成すると仮定すると (そうしないとは思えません)、それはあなたのためにそれを行っています。そうです、それは絶対にデータベースが処理するものでなければなりません。
「値をハッシュすると、何らかの方法で操作が最適化されますか?」そうではありません。
ハッシュは一方向です。テーブル スキャンを実行して元の名前を再構築することはできません。
名前と名前のハッシュの両方を保持したい場合は、派生データを含めることで基本的なルールを破っています。現在、名前の更新にはハッシュの更新が必要です。
ハッシュで発生する「値を均等に分散させる」ことは、インデックスの仕事です。
いいえ、ハッシュしないでください。データベースはデータに基づいてインデックスを作成しますが、ハッシュは役に立ちません。唯一役立つのは、キー値がハッシュよりもはるかに長い場合です。