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

推薦する

超シンプルな QPS 統計手法 (推奨)

過去 N 秒間の QPS 値の統計 (1 秒あたりの選択、挿入などを含む) mysql> se...

CSSアニメーションでポイント獲得効果を実現するアイデアを詳しく解説

最近のプロジェクトでは、ポイントを集める効果を作成する必要があります。 ボスの説明によると、この効果...

JSを使用して画像を効果的に圧縮する方法

目次序文変換関係具体的な実装file2DataUrl(ファイル、コールバック) file2Image...

Linux システムで TCP 接続を作成するプロセスの紹介

目次LinuxでTCPを作成する手順サーバクライアントTCP確立プロセスサンプルコードLinuxでT...

Dockerでホストファイルをカスタマイズする方法について簡単に説明します

目次1. コマンド2. docker-compose.yml 3. Dockerファイル4. 直接変...

MySQLデータベースバックアップのさまざまな実装方法の概要

この記事では、MySQL データベースのバックアップを実装するさまざまな方法について説明します。ご参...

MacOS に MySQL 8.0 をインストールして MySQL にログインする方法

公式チュートリアルに従って、インストール パッケージをダウンロードし、[インストール] をクリックし...

HTML+CSSで充電水滴融合特殊効果コードを実現

目次序文:成し遂げる:要約:まず効果を見てみましょう: 序文:このアイデアは、Bilibili のア...

NginxはURLのパスに応じてアップストリームに動的に転送します

Nginx では、URL のパス パラメータに基づいて、到達不可能なアップストリームに動的に転送する...

この記事では、VUE の複数の DIV とボタン バインディングの Enter イベントを実装する方法を説明します。

現在、OK ボタンをクリックしたときやキーボードの Enter キーを押したときに操作を実行するとい...

Vue+SSMは画像アップロードのプレビュー効果を実現します

現在の要件は、ファイルのアップロード ボタンがあることです。ボタンをクリックすると、アップロードする...

CSS スタイル分類入門(基礎知識)

CSSスタイルの分類1. 内部スタイル ---- インラインスタイルスタイルタグの使用 <ス...

CSS ファンタスティックボーダーアニメーション効果の実装

今日、私はブログサイト shoptalkshow を閲覧していて、非常に興味深いこのインターフェース...

JavaScript でのプロキシの使用を理解するための記事

目次エージェントとは何かプロキシの基礎知識ハンドラオブジェクトのメソッドプロキシでできること参考文献...

JavaScriptイテレータを学ぶ

目次導入js のイテレータはどのように見えるか反復プロトコル反復可能なプロトコルイテレータプロトコル...