MySQL インデックスの長所と短所、およびインデックス作成のガイドライン

MySQL インデックスの長所と短所、およびインデックス作成のガイドライン

1. インデックスを作成する理由(メリット)

インデックスを作成するとシステムのパフォーマンスが大幅に向上する可能性があるためです。

  • まず、一意のインデックスを作成することにより、データベース テーブル内の各データ行の一意性が保証されます。
  • 2 番目に、データの取得速度が大幅に向上します。これは、インデックスを作成する主な理由でもあります。
  • 3 番目に、テーブル間の接続を高速化できます。これは、データの参照整合性を実現する上で特に重要です。
  • 4 番目に、データ取得にグループ化句と並べ替え句を使用すると、クエリでのグループ化と並べ替えにかかる時間も大幅に短縮されます。
  • 5 番目に、インデックスを使用すると、クエリ プロセス中に最適化されたハイダーを使用して、システム パフォーマンスを向上させることができます。

2. 方向性指標を設定することのデメリット

インデックスを追加すると多くの利点があるので、テーブル内のすべての列にインデックスを作成しないのはなぜかと疑問に思う人もいるかもしれません。この考えは確かに合理的ですが、一方的でもあります。インデックスには多くの利点がありますが、テーブル内のすべての列にインデックスを追加するのは賢明ではありません。インデックスを追加することには多くの欠点もあるためです。

  • まず、インデックスの作成と維持には時間がかかり、データの量が増えるにつれてこの時間も長くなります。
  • 2 番目に、インデックスには物理的なスペースが必要です。データ テーブルが占めるデータ スペースに加えて、各インデックスも一定量の物理的なスペースを占有します。クラスター化インデックスを作成する場合、必要なスペースはさらに大きくなります。
  • 3 番目に、テーブル内のデータを追加、削除、変更するときに、インデックスも動的に維持する必要があり、データのメンテナンスの速度が低下します。

3. インデックス設計のガイドライン

インデックスは、データベース テーブル内の特定の列に作成されます。したがって、インデックスを作成するときは、どの列にインデックスを付けることができ、どの列にインデックスを付けることができないかを慎重に検討する必要があります。

一般的に、これらの列にインデックスを作成する必要があります。

  • まず、頻繁に検索される列の検索を高速化できます。
  • 次に、主キーとして機能する列で、列の一意性を強制し、テーブル内のデータ構造を整理します。
  • 3 番目に、接続で頻繁に使用される列 (主に外部キー) では、接続速度を高速化できます。
  • 4 番目に、インデックスがすでにソートされており、指定された範囲が連続しているため、範囲で検索する必要があることが多い列にインデックスを作成します。
  • 5 番目に、頻繁に並べ替える必要がある列にインデックスを作成します。インデックスはすでに並べ替えられているため、クエリではインデックスの並べ替えを使用して並べ替えクエリの時間を短縮できます。
  • 6番目に、WHERE句で頻繁に使用される列にインデックスを作成して、条件の判定を高速化します。

同様に、インデックスを作成してはいけない列もいくつかあります。一般的に、インデックスを作成すべきでない列には次の特性があります。

  • まず、クエリでほとんど使用または参照されない列にインデックスを作成しないでください。これらの列はほとんど使用されないため、インデックスを作成しても作成しなくてもクエリ速度は向上しないからです。逆に、インデックスを追加すると、システムのメンテナンス速度が低下し、必要なスペースが増加します。
  • 次に、データ値が非常に少ない列にはインデックスを追加しないでください。これは、人事テーブルの性別列など、これらの列には非常に少ない値があるためです。クエリ結果では、結果セットのデータ行がテーブル内のデータ行の大部分を占めます。つまり、テーブルで検索する必要があるデータ行の割合が非常に大きいということです。インデックスを追加しても、検索速度は大幅に向上しません。
  • 3 番目に、テキスト、イメージ、ビット データ型として定義された列にはインデックスを追加しないでください。これは、これらの列のデータ量が非常に多いか、値が非常に少ないためです。
  • 4 番目に、変更パフォーマンスが検索パフォーマンスよりもはるかに大きい場合は、インデックスを作成しないでください。これは、修正パフォーマンスと検索パフォーマンスが互いに矛盾しているためです。インデックスを追加すると、検索パフォーマンスは向上しますが、変更パフォーマンスは低下します。インデックスの数を減らすと、変更パフォーマンスは向上しますが、取得パフォーマンスは低下します。したがって、変更パフォーマンスが検索パフォーマンスよりもはるかに高い場合は、インデックスを作成しないでください。

以上がMySQLインデックスのメリットとデメリット、インデックス作成の基準についての詳しい内容です。MySQLインデックスについてさらに詳しく知りたい方は、123WORDPRESS.COMの他の関連記事もぜひご覧ください!

以下もご興味があるかもしれません:
  • MySQL 文字列インデックスのより合理的な作成ルールに関する議論
  • MySQL コマンドを使用してインデックスを作成、削除、およびクエリする方法の紹介
  • MySQLインデックスを正しく作成する方法
  • MySQL の結合テーブルにインデックスを作成する方法
  • MySQLが全文インデックス共有を実現
  • MySQL インデックスの概要の詳細な説明 - MySQL インデックスの種類と作成
  • MySQL でインデックスを表示、作成、削除する方法
  • mysql インデックスの追加 mysql インデックスの作成方法
  • MySQLインデックスの作成について知っておくべきこと

<<:  Docker はクラスター MongoDB 実装手順を構築します

>>:  vuexプロジェクトにおけるログインステータス管理の実践プロセス

推薦する

JavaScriptのプリコンパイルを見てみましょう(概要)

JSランニング三部作js実行コードは3つのステップに分かれています構文解析プリコンパイル解釈Jav...

JavaScript Domはカルーセルの原理と例を実装します

カルーセルを作りたい場合、まずその原理を理解する必要があります。画像を右から左にスライドさせるにはど...

MySQL における 10 進数型の使用法の簡単な紹介

MySQL でサポートされている浮動小数点型は、 FLOAT 、 DOUBLE 、およびDECIMA...

LinuxにDockerをインストールする(非常に簡単なインストール方法)

最近、かなり暇です。大学4年生として数か月間インターンをしていました。インターンとして、Docker...

HTMLリンクを書くときは、HTTPリクエストを減らすためにサブフォルダに必ずスラッシュを追加してください。

サブフォルダーの末尾にスラッシュがない場合、2 つの HTTP リクエストが生成され、効率に影響しま...

offsetWidth、clientWidth、scrollWidth、scrollTop、scrollLeft などのプロパティの図。

注 1: 上の画像の背景全体がこの Web ページのフルサイズであり、中央の小さなボックスがブラウザ...

MySql8.023 インストール プロセスの詳細なグラフィック説明 (初回インストール)

まず、MySQL公式サイトからインストールパッケージをダウンロードします。MySQLはオープンソース...

Windows 10 でカスタムドメイン名をバインドするように Hexo と GitHub を構成する方法

Hexo は Windows 10 でカスタムドメイン名を GitHub にバインドしますまずドメイ...

MySQL トランザクション分離レベルと MVCC の詳細な説明

目次トランザクション分離レベル同時トランザクション実行中に発生した問題SQL標準の4つの分離レベルM...

Vue印刷機能を実装する2つの方法の概要

方法1: npm経由でプラグインをインストールする1. npm install vue-print-...

MySQL はパスワード強度の検証をオフにします

パスワード強度検証について: [root@mysql mysql]# mysql -uroot -p...

Linux での SELinux を理解する方法

目次1. SELinux の紹介2. SELinuxの基本概念2.1 仕事の種類2.2. セキュリテ...

写真をアップロードして顔を認識する Vue+axios サンプルコード

目次Axios リクエストQs処理データ分析Vantアップロードファイル形式完全なコードこの記事では...

Pagoda Panel のインストール時にサーバーがデータベースにリモート接続できない問題の解決策

自分のウェブサイトを構築する予定なので、618 プロモーションを利用して Tencent Cloud...