「データベースインデックス」は、データベーステーブルからのレコードの取得を高速化する特別な種類のデータ構造を指します。データベースインデックスにより、データベースクエリが処理されるたびにすべての行を検索しなくても、データベーステーブル内のデータを効率的に見つけてアクセスできるようになります。
データベースインデックスは、本のインデックスに例えることができます。データベースのインデックスは、本のインデックスページが目的のトピックや章を指しているのと同じように、データベースで探しているレコードを示しています。
ただし、データベースインデックスは、迅速かつ効率的なデータの検索とアクセスに不可欠ですが、追加の書き込みとメモリスペースを消費します。
インデックスとは何ですか?
データベースインデックスは、2つの列で構成される特別なルックアップテーブルです。最初の列は検索キーで、2番目の列はデータポインターです。キーは、データベーステーブルから検索および取得する値であり、ポインタまたは参照は、その特定の検索キーのディスクブロックアドレスをデータベースに格納します。キーフィールドは、すべてのクエリのデータ取得操作を高速化するように並べ替えられています。
データベースインデックスを使用する理由
ここでは、データベースインデックスを簡単な方法で示します。会社で働いている8人の従業員のデータベーステーブルがあり、テーブルの最後のエントリの情報を検索するとします。ここで、前のエントリを見つけるには、データベースの各行を検索する必要があります。
ただし、従業員の名に基づいてテーブルをアルファベット順に並べ替えたとします。したがって、ここではインデックスキーは名前列に基づいています。その場合、最後のエントリを検索すると、 ザック 、テーブルの中央にジャンプして、エントリが列の前にあるか後にあるかを決定できます。
ご存知のように、それは中央の行の後に来るので、中央の行の後の行を再び半分に分割して、同様の比較を行うことができます。このように、最後のエントリを見つけるために各行をトラバースする必要はありません。
会社に1,000,000人の従業員がいて、最後のエントリがZackだった場合、彼の名前を見つけるには50,000行を検索する必要があります。一方、アルファベット順のインデックスを使用すると、いくつかの手順でそれを行うことができます。これで、データベースのインデックス作成により、データの検索とアクセスがどれだけ高速になるかを想像できます。
関連している: 13プログラマーが知っておくべき最も重要なSQLコマンド
データベースインデックスのさまざまなファイル編成方法
インデックス作成は、使用するファイル編成メカニズムに大きく依存します。通常、データを格納するためにデータベースのインデックス作成で使用されるファイル編成方法には2つのタイプがあります。それらについては、以下で説明します。
1.順序付けされたインデックスファイル: これは、インデックスデータを格納する従来の方法です。この方法では、キー値は特定の順序でソートされます。順序付けされたインデックスファイルのデータは、2つの方法で保存できます。
- スパースインデックス: このタイプのインデックス作成では、レコードごとにインデックスエントリが作成されます。
- 高密度インデックス: 高密度インデックス作成では、一部のレコードに対してインデックスエントリが作成されます。この方法でレコードを見つけるには、最初に、探している検索キー値以下のインデックスエントリから最も重要な検索キー値を見つける必要があります。
2.ハッシュファイルの編成: このファイル編成方法では、ハッシュ関数がレコードが保存される場所またはディスクブロックを決定します。
データベースインデックスの種類
データベースのインデックス作成には、一般的に3つの方法があります。彼らです:
- クラスター化インデックス
- 非クラスター化インデックス
- マルチレベルのインデックス作成
1.クラスター化インデックス
クラスタ化インデックスでは、1つのファイルに3つ以上のデータレコードを格納できます。システムは、実際のデータをポインターではなくクラスター化インデックスに保持します。検索は、関連するすべてのデータを同じ場所に保存するため、クラスター化インデックスを使用するとコスト効率が高くなります。
謝罪の手紙を終わらせる方法
クラスタリングインデックスは、順序付けられたデータファイルを使用してそれ自体を定義します。また、このタイプのインデックス作成では、複数のデータベーステーブルを結合することが非常に一般的です。
キーごとに一意ではない非プライマリ列に基づいてインデックスを作成することもできます。このような場合、複数の列を組み合わせて、クラスター化インデックスの一意のキー値を形成します。
つまり、クラスタリングインデックスは、類似のデータ型がグループ化され、それらのインデックスが作成される場所です。
例: 10の異なる部門に1,000人を超える従業員がいる会社があるとします。この場合、会社は同じ部門で働く従業員にインデックスを付けるために、DBMSにクラスタリングインデックスを作成する必要があります。
同じ部門で働く従業員がいる各クラスターは単一のクラスターとして定義され、インデックス内のデータポインターは、クラスター全体を参照します。
関連している: SQLデータベースの外部キーとは何ですか?
2.非クラスター化インデックス
非クラスター化インデックスとは、インデックス行の順序が元のデータの物理的な保存方法と同じではないタイプのインデックスを指します。代わりに、非クラスター化インデックスはデータベース内のデータストレージを指します。
例: 非クラスター化インデックスは、目次ページがある本に似ています。ここで、データポインタまたは参照はアルファベット順にソートされた目次ページであり、実際のデータは本のページの情報です。目次ページには、本のページの情報が順番に格納されていません。
3.マルチレベルのインデックス作成
マルチレベルインデックスは、インデックスの数が非常に多く、プライマリインデックスをメインメモリに保存できない場合に使用されます。ご存知かもしれませんが、データベースインデックスは検索キーとデータポインタで構成されています。データベースのサイズが大きくなると、インデックスの数も増えます。
ただし、迅速な検索操作を保証するには、インデックスレコードをメモリに保持する必要があります。インデックス番号が大きいときに単一レベルのインデックスが使用される場合、そのサイズと複数のアクセスのために、そのインデックスをメモリに格納することはほとんどありません。
ここで、マルチレベルのインデックス作成が役立ちます。この手法は、単一レベルのインデックスを複数の小さなブロックに分割します。分解後、外部レベルのブロックは非常に小さくなり、メインメモリに簡単に保存できます。
関連している: JavaでMySQLデータベースに接続する方法
SQLインデックスの断片化とは何ですか?
インデックスページのいずれかの順序がデータファイル内の物理的な順序と一致しない場合、SQLインデックスの断片化が発生します。最初は、すべてのSQLインデックスに断片化がありませんが、データベース(データの挿入/削除/変更)を繰り返し使用すると、断片化が発生する可能性があります。
データベースの断片化とは別に、データベースはデータベースの破損などの他の重大な問題に直面する可能性もあります。データの損失やWebサイトの損傷につながる可能性があります。あなたがあなたのウェブサイトとビジネスをしているなら、それはあなたにとって致命的な打撃になる可能性があります。
共有 共有 つぶやき Eメール SQL Serverデータが破損しましたか? SQL回復ツールボックスでそれを回復してみてくださいSQLServerのRecoveryToolboxは、すべてのバージョンのMS SQLServerの破損したMDFファイルを修正するのに役立ちます。
BIOSウィンドウからのシステムの復元10次を読む 関連トピック
- プログラミング
- SQL
- データ分析
- データベース
Zadhid Powellは、コーディングをあきらめて書き始めたコンピューターエンジニアです。同時に、彼はデジタルマーケティング担当者、テクノロジー愛好家、SaaSエキスパート、リーダー、そしてソフトウェアトレンドの熱心なフォロワーでもあります。多くの場合、彼はギターでダウンタウンのクラブを揺らしたり、海底ダイビングを調べたりしています。
Zadhid A.Powellのその他の記事ニュースレターを購読する
ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。
購読するにはここをクリックしてください