MySQL インデックス (インデックス) とは何ですか? インデックスを使用する理由

インデックスは、データ テーブル内の 1 つ以上の列で構成される特別なデータベース構造であり、データ テーブル内の特定の値を持つレコードをすばやくクエリするために使用できます。インデックスの意味、機能、メリットとデメリットを以下に詳しく説明します。

インデックスを介して、データをクエリするときにレコードのすべての情報を読み取る必要はなく、インデックス列をクエリするだけです。それ以外の場合、データベース システムは各レコードからすべての情報を読み取って一致させます。

索引は、新華辞典の表音表と比較できます。例えば、「く」という単語を調べたい場合、読み順を使わない場合、辞書の400ページからページごとに検索する必要があります。ただし、ピンインを抽出して配列表を作成する場合は、10 ページ以上の配列表から直接検索するだけで済みます。これにより、多くの時間を節約できます。

したがって、インデックスを使用すると、データベースのクエリ速度が大幅に向上し、データベース システムのパフォーマンスが効果的に向上します。

インデックスを使用する理由

インデックスは、テーブル内の 1 つまたは複数の列に基づいて、特定の順序で確立された列の値とレコードの行との間の対応表です.元のテーブルのインデックス列とレコード行. の順序付けられたリスト.

インデックスは MySQL の非常に重要なデータベース オブジェクトであり、データベース パフォーマンス チューニング テクノロジの基礎であり、高速なデータ検索を実現するためによく使用されます。

MySQL では、通常、データベース テーブルの行データにアクセスする方法が 2 つあります。

1) 順次アクセス

シーケンシャル アクセスとは、順序付けされていない行データから条件に一致する対象データが見つかるまで、行の最初から最後まで行ごとにテーブル全体を走査することです。

順次アクセスの実装は比較的単純ですが、テーブルに大量のデータがある場合、効率は非常に低くなります。たとえば、数千万のデータの中から少量のデータを検索する場合、シーケンシャル アクセスを使用するとすべてのデータを走査することになり、多くの時間がかかり、データベースの処理パフォーマンスに影響を与えることは明らかです。

2) インデックス アクセス

インデックス アクセスは、インデックスを走査してテーブル内の行に直接アクセスする方法です。

この方法を使用する前提は、テーブルにインデックスを作成することです. 列にインデックスを作成した後、データを検索するときに、列のインデックスに従って対応するレコード行の位置を直接見つけることができます.すぐにデータを見つけます。インデックスは、指定された列のデータ値へのポインターを格納し、指定された並べ替え順序に従ってこれらのポインターを並べ替えます。

例えば、学生基本情報テーブルtb_studentsでは、student_idを元にインデックスを設定すると、インデックス列から実レコードへのマッピングテーブルが作成されます。ユーザーが Student_id が 12022 であるデータを検索する必要がある場合、システムは最初に student_id インデックスでレコードを検索し、次にマッピング テーブルを介してデータ行を直接検索し、この行のデータを返します。通常、インデックスをスキャンする速度は、実際のデータ行をスキャンする速度よりもはるかに高速であるため、インデックスを使用する方法によって、データベースの作業効率を大幅に向上させることができます。

つまり、インデックスがないと、MySQL は関連する行が見つかるまで、最初のレコードから始めてテーブル全体を読み取る必要があります。テーブルが大きいほど、データのクエリにかかる時間が長くなります。テーブル内のクエリ対象の列にインデックスがある場合、MySQL はすべてのデータを確認する必要なく、データ ファイルを検索する場所にすばやく到達できるため、多くの時間を節約できます。

索引付けの長所と短所

インデックスには明らかな利点と、避けられない欠点があります。

アドバンテージ

インデックスの利点は次のとおりです。

  • データベース テーブル内のデータの各行の一意性は、一意のインデックスを作成することによって保証できます。
  • インデックスはすべての MySQL カラム タイプに設定できます。
  • インデックスを使用する主な理由であるデータのクエリ速度を大幅に高速化できます。
  • データの参照整合性を実現する際に、テーブル間の接続を高速化できます。
  • また、データ クエリにグループ化句と並べ替え句を使用すると、クエリでのグループ化と並べ替えの時間を大幅に短縮できます。

欠点

インデックスの追加には、主に次のような多くの欠点もあります。

  • インデックス グループの作成と維持には時間がかかり、データ量が増えるほど時間がかかります。
  • インデックスはディスク スペースを占有する必要があります。データ テーブルがデータ スペースを占有するだけでなく、各インデックスも一定量の物理スペースを占有します。多数のインデックスがある場合、インデックス ファイルはデータ ファイルよりも早く最大ファイル サイズに達する可能性があります。
  • テーブル内のデータが追加、削除、および変更されると、インデックスも動的に維持する必要があり、データの維持の速度が低下します。

インデックスを使用する場合は、インデックスの長所と短所を総合的に考慮する必要があります。

インデックスはクエリの速度を向上させることができますが、レコードの挿入速度に影響します。インデックス付きのテーブルにレコードを挿入する場合、データベース システムはインデックスに従ってソートするため、レコードの挿入速度が低下し、多数のレコードを挿入する場合の速度への影響がより明白になります。この場合、最初にテーブル内のインデックスを削除してからデータを挿入し、挿入が完了してからインデックスを作成するのが最善の方法です。

ダーク ホース プログラマー MySQL データベース エントリから習熟まで、mysql のインストールから高度な mysql まで、mysql の最適化をすべて網羅

おすすめ

転載: blog.csdn.net/Itmastergo/article/details/130483636