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プロジェクトにおけるログインステータス管理の実践プロセス

推薦する

シャドウソックスを使用してLAN透過ゲートウェイを構築する

目次dnsmasq をインストールして設定するChinaDNS をインストールして設定するshado...

Vue の関連ページへのマルチレベルジャンプ (ページドリルダウン) 機能の完全な例

背景プロジェクト開発プロセスでは、前のページから次のページにジャンプする必要に迫られることがよくあり...

背景位置パーセンテージ原則の詳細な説明

今日、誰かがコードを調整するのを手伝っていたとき、次のようなスタイルを見つけました。 背景位置: 5...

モバイル開発チュートリアル: ピクセル表示の問題の概要

序文モバイル端末の開発の過程で、モバイル端末のディスプレイはデスクトップ端末のディスプレイとは一般的...

Word のコンテンツを Web サイトのエディターに直接コピーすることはお勧めしません。

<br />質問: Word のコンテンツを Web サイトのエディターに直接コピーする...

Linux にバイナリ MySQL をインストールして MySQL パスワードをクラックする方法

1. システムに必要な libaio ソフトウェアがインストールされていることを確認します。インスト...

Vue は動的な円形のパーセンテージ進捗バーを実装します

最近、小さなプログラムを開発しているときに、次の設計図のような円形のパーセンテージ進捗状況バーを実装...

Vue が価格カレンダー効果を実現

この記事では、価格カレンダー効果を実現するためのVueの具体的なコードを例として紹介します。具体的な...

フロントエンド JavaScript ハウスキーパー package.json

目次1. 必須属性1. 名前2. バージョン2. 説明情報1. 説明2. キーワード3. 著者4. ...

Mysqlの同時パラメータ調整の詳細な説明

目次クエリキャッシュの最適化概要クエリプロセスクエリキャッシュ構成クエリキャッシュの無効化メモリ管理...

Nginx 最適化サービスで Web ページ圧縮を実装する方法

リソースを節約するためにWebページの圧縮を設定する1.まず、設定を変更しましょう vim /usr...

CSSはフロントエンドの画像変形の問題を完璧に解決します

Toutiao IT School で、CSS がフロントエンドの画像変形の問題を完璧に解決するとい...

JavaScript のプロトタイプとプロトタイプチェーンの詳細な説明

目次プロトタイプチェーン図プロトタイピングに必須の知識プロトタイププロパティ(プロトタイプを表示) ...

MySQL の日付と時刻関数の概要 (MySQL 5.X)

1. MySQLは現在の日付と時刻を取得する関数1.1 現在の日付 + 時刻 (日付 + 時刻) ...