2

データベーステーブルに、テーブルのキーとして定義された列「名前」があるとします。通常の名前の値は、"Bill"、"Elizabeth"、"Bob"、"Alice" です。テーブルの検索も名前キーによって行われます。

値をハッシュすると、何らかの方法で操作が最適化されますか? つまり、名前のハッシュ値として各名前を入力します (MD5 - 32 ビットと仮定します)。

もしそうなら、これはクライアントが処理するものではなく、データベースの機能であるべきではありませんか?

4

3 に答える 3

3

データベースが主キーのインデックスを生成すると仮定すると (そうしないとは思えません)、それはあなたのためにそれを行っています。そうです、それは絶対にデータベースが処理するものでなければなりません。

于 2008-10-22T14:31:21.590 に答える
2

「値をハッシュすると、何らかの方法で操作が最適化されますか?」そうではありません。

ハッシュは一方向です。テーブル スキャンを実行して元の名前を再構築することはできません。

名前と名前のハッシュの両方を保持したい場合は、派生データを含めることで基本的なルールを破っています。現在、名前の更新にはハッシュの更新が必要です。

ハッシュで発生する「値を均等に分散させる」ことは、インデックスの仕事です。

于 2008-10-22T14:34:43.377 に答える
1

いいえ、ハッシュしないでください。データベースはデータに基づいてインデックスを作成しますが、ハッシュは役に立ちません。唯一役立つの、キー値がハッシュよりもはるかに長い場合です。

于 2008-10-22T14:35:46.510 に答える