ホームページ > データベース > mysql チュートリアル > データベースのインデックス作成はクエリのパフォーマンスをどのように向上させますか?いつ使用する必要がありますか?

データベースのインデックス作成はクエリのパフォーマンスをどのように向上させますか?いつ使用する必要がありますか?

Patricia Arquette
リリース: 2025-01-23 15:38:14
オリジナル
768 人が閲覧しました

How Does Database Indexing Improve Query Performance and When Should It Be Used?

データベースインデックス: 動作原理とアプリケーションシナリオ

データベースのインデックス作成は、データベース クエリのパフォーマンスを向上させるために、特定の方法でデータを整理するテクノロジーです。データベースのサイズが大きくなるにつれて、データの検索と取得が大幅に高速化されるため、インデックス作成が重要になります。

インデックスの重要性

データがディスクに保存されるとき、データはデータ ブロックに分割されます。これらのデータ ブロックにアクセスするには、ブロック全体を完全に読み取る必要があり、これは時間のかかるプロセスです。並べ替えられていないデータを検索するには線形検索が必要ですが、これには大きなデータ ブロックをスキャンする必要があり、非効率的です。

データベースインデックスとは何ですか?

インデックスを使用すると、特定のフィールドでデータを並べ替えることにより、より高速なデータ検索が可能になります。フィールドにインデックスが作成されると、フィールド値とそれに対応するレコード ポインタを含む追加のデータ構造が作成されます。このインデックス構造はバイナリ検索を実行できるようにソートされており、パフォーマンスが大幅に向上します。

インデックスの仕組み

次のサンプル データベース テーブルについて考えてみましょう:

字段名 数据类型 大小
id 无符号INT 4 字节
firstName Char(50) 50 字节
lastName Char(50) 50 字节
emailAddress Char(100) 100 字节

MyISAM エンジンを使用する 5,000,000 レコードを含むテーブルがあるとします (デフォルトのブロック サイズは 1,024 バイト)。 ID 値 (ソートされたキー フィールド) の検索に必要なデータ ブロックの平均アクセス数は 20 で、線形検索に必要な 500,000 アクセスを大幅に下回ります。

ただし、firstName などの並べ替えられていない非キー フィールドを検索するには、テーブル全体をスキャンする必要があります (1,000,000 ブロック アクセス)。ここでインデックスが役に立ちます。

firstName のインデックスは次の構造になります:

字段名 数据类型 大小
firstName Char(50) 50 字节
(记录指针) 特殊 4 字节

インデックスを使用すると、firstName 値を取得するために平均 20 回のブロック アクセスのみを必要とするバイナリ検索が可能になります。これは、インデックスのないテーブルで必要な 1,000,000 アクセスに比べて大幅な改善です。

インデックスを使用する場合

インデックス作成によりクエリのパフォーマンスが向上しますが、オーバーヘッド (追加のディスク領域と処理時間) も伴います。インデックスは、次の要素に基づいて慎重に選択する必要があります:

  • WHERE 句で使用されるフィールド: フィルタリングに頻繁に使用されるフィールドにインデックスを付けると、クエリのパフォーマンスが大幅に向上します。
  • カーディナリティ: カーディナリティが高い (一意の値が多い) フィールドは、返されるレコードの数が減り、バイナリ検索がより効率的になるため、インデックス作成に適しています。
  • 出力内の未使用フィールド: 出力のみに使用されるフィールドのインデックス付けを回避すると、ディスク領域を節約し、挿入および削除操作時の処理時間を短縮できます。

以上がデータベースのインデックス作成はクエリのパフォーマンスをどのように向上させますか?いつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート