MySQLインデックスの簡単な分析

MySQLインデックスの簡単な分析

データベース インデックスは、テーブル操作の速度を向上させることを目的としたデータ構造です。高速なランダム検索とレコードへのアクセスの効率的なソートを提供する 1 つ以上の列を使用してインデックスを作成できます。

インデックスを作成するには、SQL クエリを作成するためにどの列を使用するかを検討し、それらの列に 1 つ以上のインデックスを作成する必要があります。

実際、インデックスは、主キーまたはインデックス フィールドへのポインターを保持し、各レコードを実際のテーブル タイプにポイントするテーブルでもあります。

インデックスはユーザーには表示されません。クエリを高速化するためにのみ使用され、データベース検索エンジンによってレコードの検索速度を向上させるために使用されます。

SELECT ステートメントはこれらのテーブルに対して高速に動作するので、INSERT ステートメントと UPDATE ステートメントではインデックスの作成に時間がかかります。その理由は、データを挿入または更新するときに、データベースは挿入または更新されたインデックス値も更新する必要があるためです。

シンプルでユニークなインデックス

テーブルに一意のインデックスを作成できます。一意のインデックスとは、2 つの行が同じインデックス値を持つことができないことを意味します。テーブルにインデックスを作成する構文は次のとおりです。

ユニークインデックスを作成する index_name
ON テーブル名 (列1、列2、...);

1 つ以上の列を使用してインデックスを作成できます。たとえば、tutorial_author を使用して tutorials_tbl にインデックスを作成できます。

一意のインデックス AUTHOR_INDEX を作成する
ON tutorials_tbl (チュートリアル作成者)

テーブルに単純なインデックスを作成できます。単純なインデックスを作成するには、UNIQUE キーワードを省略するだけです。単純なインデックスでは、テーブル内に繰り返し値を含めることができます。

インデックス列の値を降順で並べ替えたい場合は、列名の後に予約語 DESC を追加します。

mysql> 一意のインデックス AUTHOR_INDEX を作成します
オン tutorials_tbl (tutorial_author DESC)

ALTERコマンドを使用してインデックスを追加および削除します

テーブルに追加できるインデックスには 4 つの種類があります。

  • ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): 主キー (PRIMARY KEY) を追加します。つまり、インデックス値は一意である必要があり、空にすることはできません。
  • ALTER TABLE tbl_name ADD UNIQUE index_name (column_list): 値が一意であるインデックスを作成します (ただし、NULL 値は使用できませんが、他の値は複数回出現できます)。
  • ALTER TABLE tbl_name ADD INDEX index_name (column_list): 任意の値が複数回出現する通常のインデックスを追加します。
  • ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list): テキスト検索用の特別な FULLTEXT インデックスを作成します。

以下は、既存のテーブルにインデックスを追加する例です。

mysql> ALTER TABLE testalter_tbl ADD INDEX (c);

インデックスは、DROP 句を指定した ALTER コマンドを使用して削除できます。上記で作成したインデックスを削除するには、次の例を試してください。

mysql> ALTER TABLE testalter_tbl DROP INDEX (c);

ALTERコマンドを使用してPRIMARY KEYを追加および削除します。

同様の方法で主キーを追加することもできます。ただし、列内で主キーが適切に使用されるようにするには、NOT NULL の使用を指定する必要があります。

以下は、既存のテーブルに主キーを追加する例です。列を主キーとして追加する前に、列に NOT NULL 属性を追加する必要があります。

mysql> ALTER TABLE testalter_tbl MODIFY i INT NOT NULL;
mysql> ALTER TABLE testalter_tbl に PRIMARY KEY (i) を追加します。

次のように ALTER コマンドを使用して主キーを削除できます。

mysql> ALTER TABLE testalter_tbl で PRIMARY KEY を削除します。

主キーではないインデックスを削除するには、インデックス名を指定する必要があります。

インデックス情報を表示する

SHOW INDEX コマンドを使用すると、テーブルに関連付けられているすべてのインデックスを一覧表示できます。 出力を垂直にフォーマットします (\G で指定)。これは、出力を要約する長い行を回避するのに役立ちます。

次の例を試してください。

mysql> SHOW INDEX FROM table_name\G
........

要約する

上記は編集者が紹介したMySQLインデックスです。皆様のお役に立てれば幸いです。ご質問がございましたら、メッセージを残していただければ、編集者がすぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • MySQL のインデックスとビューの使用方法と違いの詳細な説明
  • MySQL パーティション フィールド列に別のインデックスを作成する必要がありますか?
  • MySQL の冗長インデックスと重複インデックスの詳細な説明
  • MySQLのジョイントインデックス機能の分析と使用例
  • MySql インデックスの詳細な紹介と正しい使用方法
  • MySQLのINサブクエリによってインデックスが使用できなくなる問題を解決する
  • mysql のインデックスと FROM_UNIXTIME に関する問題
  • テーブルの作成、フィールドの追加、フィールドの変更、インデックスの追加によく使用される MySQL の SQL 文の概要
  • MySQL の結合テーブルにインデックスを作成する方法
  • MySQLインデックスの使用に関するヒントと注意事項
  • MySQLのインデックス設計の原則と一般的なインデックスの違いについて簡単に説明します。
  • MySQL のフィールドに一意のインデックスを追加および削除する方法
  • MySQL でのインデックスの追加と削除に関連する操作
  • MySQLインデックス操作コマンドの詳しい説明
  • MySQLが全文インデックス共有を実現
  • MySQL テーブルを変更して、複数の列 (フィールド) とインデックスを一度に追加する方法
  • MySQL を理解する - インデックス作成と最適化の概要
  • MySQLの権限とインデックスの詳細な説明

<<:  VUE+Express+MongoDBのフロントエンドとバックエンドの分離によるノートウォールの実現

>>:  nginxとバックエンドポート間の競合の解決策

推薦する

MySql5.7.18 の文字セット構成の詳細なグラフィック説明

背景:かなり前(2017.6.5、記事にはタイムリーさがあり、特に使用されているツールは頻繁に更新さ...

CentOS システムの rpm インストールと Nginx の設定

目次CentOS rpm のインストールと Nginx の設定導入rpm パッケージのインストールサ...

jsで照明スイッチを制御する

参考までに、jsを使用して照明スイッチを制御します。具体的な内容は次のとおりです。トピック: js ...

JavaScript Sandboxについての簡単な説明

序文:サンドボックスといえば、私たちの頭には反射的に上の写真が思い浮かび、すぐに興味がわいてくるかも...

Vue3 コンパイルプロセス - ソースコード分析

序文: Vue3 がリリースされてからかなり経ちますが、最近、会社のプロジェクトでVue3 + Ty...

Vueはランニングライトのシンプルな効果を実現

この記事では、マーキーのシンプルな効果を実現するためのVueの具体的なコードを参考までに共有します。...

JSはストップウォッチタイマーを実装します

この記事の例では、ストップウォッチタイマーを実装するためのJSの具体的なコードを参考までに共有してい...

MySQL レプリケーション メカニズムの原理の説明

背景レプリケーションはデータの完全なコピーです。レプリケーションが必要な理由として、まず思い浮かぶの...

nginxリバースプロキシのマルチポートマッピングの実装

コードの説明1.1 http:www.baidu.test.com のデフォルトは 80 で、リバー...

MySQLトリガーの使用

目次1. トリガーの紹介1. トリガーとは何ですか? 2. トリガーの特徴2. トリガーを作成する1...

Apache Tika を使用してファイルが破損しているかどうかを検出する方法

Apache Tika は、さまざまな形式のファイルからファイル タイプを検出し、コンテンツを抽出す...

html-webpack-plugin' を使用してメモリ内に HTML ページ プラグインを生成します。

webpackjs ファイルをパッケージ化するときに、次に示すように、index.html インタ...

axios リクエストのカプセル化に基づく Vue アプリケーションのサンプルコード

目次axiosとは何ですか? Axios リクエストタイプ? Axiosはデフォルトのカスタム構成を...

MySQL の group by に関する簡単な説明

目次1. はじめに2. ユーザーテーブルを準備する2.1 グループ化ルール2.2 グループの使用2....

mysql8.0.21 のダウンロードとインストールに関する詳細なチュートリアル

公式ウェブサイトアドレス: https://www.mysql.com/インストールの提案: インス...