DBMS でのハッシュ (拡張可能、線形) と DBMS でのインデックス作成 (疎、密、セカンダリ キーに基づくインデックスなど) について学習しましたが、ハッシュとインデックス作成の違いがわかりません。これら 2 つの手法は一緒に使用されますか、それともどちらか一方のみが使用されますか? どちらの手法も、データをすばやく取得できるようにすることが目的のように思われるため、混乱しています。どちらでも十分だと思います。
誰でも違いを明確にできますか?
索引付けとは
索引付けは、複数のフィールドで多数のレコードをソートする方法です。テーブル内のフィールドにインデックスを作成すると、フィールド値と、それに関連するレコードへのポインターを保持する別のデータ構造が作成されます。次に、このインデックス構造がソートされ、バイナリ検索を実行できるようになります。
ハッシングとは?
ハッシュとは、文字列を通常は短い固定長の値または元の文字列を表すキーに変換することです。ハッシュは、元の値を使用してアイテムを検索するよりも短いハッシュ キーを使用してアイテムを検索する方が高速であるため、データベース内のアイテムのインデックス作成と検索に使用されます。
これで疑問が解消されると思います。
ハッシュは一種のインデックスです。キーに基づいてレコードを見つけるために使用できますが、レコードの順序は保持されません。ハッシュに基づいて、後続の要素または先行する要素に反復することはできません。ただし、これはインデックスが行うことです (データベースのコンテキストで)。
定義による
インデックス作成は、インデックス作成が行われたいくつかの属性に基づいて、データベース ファイルからレコードを効率的に取得するためのデータ構造手法です。一方、ハッシュは、インデックス構造を使用せずにディスク上のデータ レコードの直接的な位置を計算する効果的な手法です。したがって、これがインデックス作成とハッシュの主な違いです。
機能
別 インデックス作成では、キーに対応する値を持つディスク ブロックのアドレスを保持するデータ参照を使用します。一方、ハッシュでは、ハッシュ関数と呼ばれる数学関数を使用して、ディスク上のデータ レコードの直接的な位置を計算します。したがって、これはインデックス作成とハッシュの大きな違いでもあります。
インデックス作成とハッシングのもう 1 つの違いは、ハッシングはインデックス作成よりも大規模なデータベースでうまく機能することです。