MySQLインデックスの原理

Jun 18, 2019 am 09:46 AM
mysqlインデックス

MySQLインデックスの原理

MySQL データベースは、B ツリー インデックス、ハッシュ インデックス、フルテキスト インデックスなど、さまざまなインデックスをサポートしています。この記事では、B ツリー インデックスに焦点を当てます。 (推奨: 「mysql チュートリアル 」)

インデックスの原理と本質

MySQL 公式説明: インデックスはデータ取得の効率を高めるデータですMySQL の場合、データの高速クエリのための構造。インデックスは特定の検索アルゴリズムを満たすデータ構造であり、これらのデータ構造は効率的なデータ検索を実現するために特定の方法でデータを指します。

B ツリー

MySQL は一般に B ツリーをインデックス構造として使用しますが、B ツリーにはどのような特徴があるのでしょうか?

ツリー次数が n の場合、各ノード ポインターの上限は 2n 1

非リーフ ノードはデータを格納せず、ポインター インデックスのみを格納します。リーフ ノードはすべてのデータを格納しますが、ポインタを格納しない

従来の B ツリーに基づいて、シーケンシャル アクセス ポインタが追加され、図に示すように、各リーフ ノードは次の隣接するリーフ ノードへのポインタを持ちます。主にインターバルアクセスの性能向上のため、例えばキー20~50のデータを全て検索したい場合、シーケンシャルアクセスルートに従って全てのデータノードに一度にアクセスするだけで済みます。

MySQLインデックスの原理

シーケンシャル アクセスを使用した B ツリー ダイアグラム

局所性原則とディスク先読み

なぜデータベースを使用するのかシステムは通常、赤黒ツリーなどの他の構造ではなく、B ツリーをインデックス構造として使用しますか?

まず、局所性の原則とディスク先読みの概念を紹介します。

一般に、インデックス自体は大きいため、完全にメモリに保存されることはなく、インデックス ファイルの形式でディスクに保存されます。したがって、インデックス検索プロセス中にディスク IO 操作が発生しますが、ディスク IO はメモリ アクセスに比べて非常に遅いため、インデックス構造ではディスク IO アクセスの数を最小限に抑える必要があります。

ディスク IO を削減するために、ディスクはデータの事前読み取りを実行することが多く、特定の位置から開始して、一定の長さのデータを逆方向にメモリーに事前読み取りします。これは局所性の原理です。ディスクの順次読み取りは効率が高く、シーク時間が不要なため、IO 効率が向上します。

一般に、先読み長はページの整数倍であり、メインメモリとディスクはページ単位でデータを交換します。読み取る必要のあるデータがメモリにない場合、ページ フォールト割り込みがトリガーされます。システムはディスク データを読み取るリクエストをディスクに送信します。ディスクはデータの開始位置を見つけて、1 つまたは複数のデータを連続的に読み取ります。数ページのデータを逆方向に遡ってメモリにロードすると、割り込みが戻り、システムは動作を継続します。一般的なデータベース システムを設計する場合、B ツリー ノードのサイズは 1 ページに設定されるため、各ノードのロードに必要な IO は 1 回だけです。

以上がMySQLインデックスの原理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

mysql インデックス障害のいくつかの状況 mysql インデックス障害のいくつかの状況 Feb 21, 2024 pm 04:23 PM

一般的な状況: 1. 関数または演算を使用する; 2. 暗黙的な型変換; 3. 等しくない (!= または <>) を使用する; 4. LIKE 演算子を使用し、ワイルドカードで始める; 5. OR 条件; 6. NULL値、7. 低いインデックス選択性、8. 複合インデックスの左端の接頭辞の原則、9. オプティマイザーの決定、10. FORCE INDEX および IGNORE INDEX。

どのような状況で mysql インデックスが失敗しますか? どのような状況で mysql インデックスが失敗しますか? Aug 09, 2023 pm 03:38 PM

MySQL インデックスは、インデックス カラムを使用せずにクエリを実行した場合、データ型が一致していない場合、プレフィックス インデックスが不適切に使用された場合、クエリに関数や式を使用した場合、インデックス カラムの順序が正しくない場合、データ更新が頻繁に行われる場合、インデックスが多すぎるか少なすぎる場合に失敗します。 1. クエリにはインデックス列を使用しないでください。この状況を回避するには、クエリで適切なインデックス列を使用する必要があります。2. データ型が一致しません。テーブル構造を設計するときは、インデックス列がクエリの構造と一致していることを確認する必要があります。クエリのデータ型; 3. 、プレフィックス インデックスの不適切な使用、プレフィックス インデックスを使用できます。

MySQL インデックスの左プレフィックス マッチング ルール MySQL インデックスの左プレフィックス マッチング ルール Feb 24, 2024 am 10:42 AM

MySQL インデックスの左端の原則とコード例 MySQL では、インデックス作成はクエリ効率を向上させる重要な手段の 1 つです。その中でも、インデックスの左端の原則は、インデックスを使用してクエリを最適化するときに従う必要がある重要な原則です。この記事では、MySQL インデックスの左端の原則を紹介し、具体的なコード例をいくつか示します。 1. インデクス左端原則の原則 インデクス左端原則とは、インデクスにおいて問合せ条件が複数の列で構成される場合、問合せ条件を完全に満たすにはインデクスの左端の列のみを問合せできることを意味します。

MySQL インデックスを合理的に使用し、データベースのパフォーマンスを最適化するにはどうすればよいでしょうか?技術系の学生が知っておくべき設計プロトコル! MySQL インデックスを合理的に使用し、データベースのパフォーマンスを最適化するにはどうすればよいでしょうか?技術系の学生が知っておくべき設計プロトコル! Sep 10, 2023 pm 03:16 PM

MySQL インデックスを合理的に使用し、データベースのパフォーマンスを最適化するにはどうすればよいでしょうか?技術系の学生が知っておくべき設計プロトコル!はじめに: 今日のインターネット時代では、データ量は増加し続けており、データベースのパフォーマンスの最適化が非常に重要なテーマになっています。最も人気のあるリレーショナル データベースの 1 つである MySQL では、データベースのパフォーマンスを向上させるためにインデックスを合理的に使用することが重要です。この記事では、MySQL インデックスを合理的に使用し、データベースのパフォーマンスを最適化し、技術系の学生向けにいくつかの設計ルールを提供する方法を紹介します。 1. なぜインデックスを使用するのでしょうか?インデックスは、以下を使用するデータ構造です。

PHP および MySQL インデックスのデータ更新とインデックス保守のためのパフォーマンス最適化戦略と、それらがパフォーマンスに及ぼす影響 PHP および MySQL インデックスのデータ更新とインデックス保守のためのパフォーマンス最適化戦略と、それらがパフォーマンスに及ぼす影響 Oct 15, 2023 pm 12:15 PM

PHP および MySQL インデックスのデータ更新とインデックス保守のためのパフォーマンス最適化戦略と、それらがパフォーマンスに与える影響 概要: PHP および MySQL の開発において、インデックスはデータベース クエリのパフォーマンスを最適化するための重要なツールです。この記事では、インデックスの基本原則と使用法を紹介し、データの更新とメンテナンスに対するインデックスのパフォーマンスへの影響を検討します。同時に、この記事では、開発者がインデックスをよりよく理解して適用できるように、いくつかのパフォーマンス最適化戦略と具体的なコード例も提供します。インデックスの基本原則と使用法 MySQL では、インデックスは特別な番号です。

mysqlインデックスの分類は何ですか? mysqlインデックスの分類は何ですか? Apr 22, 2024 pm 07:12 PM

MySQL インデックスは次のタイプに分類されます: 1. 通常のインデックス: 値、範囲、またはプレフィックスに一致します。 2. 固有のインデックス: 値が一意であることを確認します。 3. 主キー インデックス: 主キー列の一意のインデックス。キー インデックス: 別のテーブルの主キーを指します。 5. フルテキスト インデックス: 全文検索。 7. 空間インデックス: 地理空間検索。列。

MySQL で一意のインデックスを作成してデータの一意性を確保する方法 MySQL で一意のインデックスを作成してデータの一意性を確保する方法 Mar 15, 2024 pm 12:45 PM

タイトル: データの一意性を確保するために MySQL で一意のインデックスを作成する方法とコード例 データベース設計では、データの一意性を確保することが非常に重要です。これは、MySQL で一意のインデックスを作成することで実現できます。一意のインデックスを使用すると、テーブル内の特定の列 (または列の組み合わせ) の値が一意であることが保証されます。重複する値を挿入しようとすると、MySQL はこの操作を阻止し、エラーを報告します。この記事では、MySQL で一意のインデックスを作成する方法を、具体的なコード例を示しながら紹介します。一意のインデックスとは何ですか? 一意のインデックスは、インデックスの一種です。

MySQL インデックスとは何ですか? MySQL インデックスとは何ですか? Aug 31, 2023 pm 05:43 PM

MySQL インデックスは、データベース クエリのパフォーマンスを向上させるために使用されるデータ構造です。これはデータベース テーブル内の 1 つ以上の列に作成され、データベース システムがデータを迅速に検索して取得できるようにします。インデックスは書籍の目次に相当します。インデックスにより、テーブル全体をスキャンせずにデータにすばやくアクセスできます。インデックスを適切に作成することで、クエリを高速化し、データベースのパフォーマンスを向上させることができます。

See all articles