ホームページ >データベース >mysql チュートリアル >データベースのインデックス作成によりクエリのパフォーマンスはどのように向上するのでしょうか?

データベースのインデックス作成によりクエリのパフォーマンスはどのように向上するのでしょうか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-23 15:28:13269ブラウズ

How Can Database Indexing Improve Query Performance?

データベースのインデックス作成について

はじめに

インデックス作成は、データベース管理システムの基本概念です。クエリのパフォーマンスが大幅に向上します。データベースに依存しないレベルでインデックス作成がどのように機能するかを理解することで、開発者はデータベース設計を最適化し、クエリ効率を向上させることができます。

インデックス作成が重要な理由

データをディスクに保存するディスク ブロックと呼ばれるデータ ブロック全体にアクセスする必要があります。ソートされていないテーブルで特定の値を検索するには、(N 1)/2 ブロック アクセスの複雑さを持つ線形検索が必要です。検索フィールドが並べ替えられておらず、一意でない値が含まれている場合は、テーブル全体をスキャンする必要があり、N ブロック アクセスが必要です。

インデックス作成について

インデックス作成には追加の作成が必要です。特定のフィールドに基づいてレコードを並べ替えるデータ構造。各インデックス エントリは、フィールド値と対応するレコードへのポインタで構成されます。これらのインデックス構造をソートすることで、バイナリ検索を実行でき、複雑さを log2 N ブロック アクセスまで削減できます。

インデックス作成のしくみ

500 万のサンプル データベース テーブルを考えてみましょう。行数とレコード長は 204 バイトです。テーブル サイズは、1,024 バイトのブロック サイズを使用して約 1 GB です。

  • 並べ替えと並べ替えなし: 並べ替えられた主キー フィールドの線形検索には 500,000 ブロック アクセスが必要になります。二分検索には 20 個しか必要ありません。一意でない値を含む並べ替えられていないフィールドの検索には N ブロックが必要ですaccess.
  • インデックス作成: インデックス付きフィールドとレコード ポインターのみを含むインデックスのレコード サイズは 54 バイトです。インデックスのサイズは約 278,000 ブロックです。二分検索を使用してインデックス付きフィールドを検索するには、20 ブロック アクセスと、実際のレコードを取得するための追加アクセスが 1 回だけ必要になります。

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

インデックス作成は、次の場合に有益です。

  • フィールドが頻繁に使用される場合検索
  • フィールドのカーディナリティが高い (つまり、一意の値が含まれている)
  • クエリ結果が大きい (つまり、多くのレコードを取得する)

ただし、ディスク領域のオーバーヘッドと、あまりにも多くのディスクを維持することに伴う潜在的なパフォーマンスの問題を比較検討することが重要です。インデックス。

結論

インデックス作成の仕組みを理解することで、開発者はどのフィールドにインデックスを付けるかを情報に基づいて決定し、データベース クエリの効率を向上させることができます。インデックス作成は、特にデータセットが大きくクエリが頻繁に行われるアプリケーションにおいて、データベースのパフォーマンスを最適化する上で重要な役割を果たします。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。