MySQLでインデックスを作成する:MySQLインデックスチュートリアル[2022]
公開: 2021-01-01データサイエンティストまたはプログラマーは、大量のデータを処理する必要があり、実行を高速化するためにデータを効率的に処理できる必要があります。 また、データがどのように編成されているか、および必要な特定のデータに簡単にアクセスするための最速の方法を知る必要があります。
MySQLは、Webデータベース、eコマースアプリケーション、ソーシャルメディアなど、さまざまな分野でアプリケーションを使用するリレーショナルデータベース管理システムであるため、データサイエンティストは、MySQLに関連するすべての手法を知っている必要があります。その1つがインデックスです。 この記事では、MySQLでインデックスを作成する方法について説明します。
目次
インデックスとは何ですか?
MySQLでは、インデックスを使用して、データを整理された順序で並べ替え、データを効率的かつ迅速に取得します。 これらは、データのフィルタリングに使用される1つ以上の列を使用して作成されます。 インデックスは、プライマリフィールドまたはインデックスフィールドと、メインテーブルの各レコードへのポインタを保持するテーブルの一種です。
理解を深めるために、本の索引を例として使用できます。 本のすべてのページを調べてページを探す代わりに、本の索引をチェックして、探しているページを見つけることができます。
ほとんどのデータベースシステムでは、高速で高速なパフォーマンスが必要です。 多くの企業は、データの取得と操作を高速化するために、ハードウェアに莫大な金額を投資しています。 しかし、データベースを最適化することで、コストを削減できます。
レコードはランダムに保存されるため、通常、応答時間は長くなります。検索クエリでは、保存されているレコード全体をループして必要なデータを見つける必要があります。 インデックスを使用すると、この検索がより簡単かつ迅速になります。

読み取り: SQLで列名の名前を変更
インデックスの作成
次の基本的な構文を使用して、MySQLでテーブルにインデックスを作成できます。
CREATE INDEX index_name table_name(column_name);
テーブルに一意のインデックスを作成することもできます。 これは、名前が一意であり、2つの行に同じ名前を付けることはできないことを意味します。 これには、次の構文を使用できます。
CREATE UNIQUE INDEX index_name ON table_name(column_name);
列のセカンダリインデックスが作成されると、MySQLは値をB-TreeやHashなどの別のデータ構造に格納します。 MySQLでは、列が文字列列の場合、次の構文を使用して、文字列列の列値の先頭部分のインデックスを作成できます。
column_name(length)
テーブルの作成時に列プレフィックスキー部分を作成するには、次の構文を使用できます。
CREATE TABLE table_name(
column_list、
INDEX(column_name(length))
);
また、既存のテーブルにインデックスを追加するには、次のようにします。
CREATE INDEX index_name ON table_name(column_name(length));
ここでの長さは、CHAR、VARCHAR、TEXTなどの非バイナリ文字列タイプの場合は文字数、BINARY、VARBINARY、BLOBなどのバイナリ文字列タイプの場合はバイト数です。 MySQLのCHAR、VARCHAR、BINARY、およびVARBINARY列の列プレフィックスキー部分を作成することもできます。 BLOB列とTEXT列のインデックスを作成した場合は、列プレフィックスの主要部分を指定する必要があります。
InnoDBおよびMyISAMテーブルでのみサポートされるFULLTEXTインデックスの場合、CHAR、VARCHAR、およびTEXT列のみを含めることができます。 列プレフィックスのインデックス付けはサポートされておらず、プレフィックスの長さが指定されている場合は無視されます。
必読: SQLプロジェクトのアイデア
インデックスを追加または削除するためのテーブルの変更
テーブルにインデックスを追加するには、次の4種類のステートメントを使用できます。
- 主キーを追加するには:
ALTER TABLE table_name ADD PRIMARY KEY(column_list);

ここでのインデックス値は一意である必要があり、NULLにすることはできません。
- 一意の値を持つインデックスの場合:
ALTER TABLE table_name ADD UNIQUE index_name(column_list);
複数回出現する可能性のあるNULLを除いて、値は一意である必要があります。
- 通常のインデックスを追加するには:
ALTER TABLE table_name ADD INDEX index_name(column_list);
ここでは、値が複数回表示される場合があります。
- 特別なフルテキストインデックスを作成するには:
ALTER TABLE table_name ADD FULLTEXT index_name(column_list);
FULLTEXTインデックスは、テキスト検索の目的で使用できます。
既存のテーブル
既存のテーブルにインデックスを追加するには、次の構文を使用できます。
ALTER TABLE table_name ADD INDEX(index_name);
テーブル内のインデックスを削除するには、DROPINDEXステートメントを使用します。
ALTER TABLE table_name DROP INDEX(index_name);
インデックス情報の表示
任意のテーブルに関連付けられているすべてのインデックスを一覧表示するには、SHOWINDEXコマンドを使用します。
table_name\Gからインデックスを表示
'\ G'は、垂直形式でリストを作成するために使用されます。これにより、長い行の折り返しが回避されます。
また読む: SQLインタビューの質問と回答
降順インデックス
インデックスが降順のインデックスである場合、InnoDBはエントリを降順で格納できます。 したがって、クエリで降順が要求されると、オプティマイザはこのインデックスを選択します。 これは、ORDERBY句を使用したクエリでより効率的です。 これらは、InnoDBストレージエンジンでのみサポートされています。
降順インデックスを作成または追加するための構文は、上記で使用した構文の変更または作成に似ています。
ALTER TABLE table_name ADD index_name(col1_name desc、col2_name asc);
CREATE INDEX index_name ON table_name(col1_name desc、col2_name asc);
目に見えないインデックス
クエリオプティマイザでインデックスを使用不可としてマークするには、非表示のインデックスを使用できます。 MySQLは、インデックスに関連付けられた列のデータが変更されると、非表示のインデックスを更新します。 インデックスはデフォルトで表示されます。インデックスを非表示にするには、作成時またはALTERTABLEコマンドを使用して表示を明示的に宣言する必要があります。
非表示のインデックスを作成するには、次の構文を使用します。
CREATE INDEX index_name ON table_name(c1、c2…)INVISIBLE;
既存のインデックスの表示を変更するには、次の構文を使用します。
ALTER TABLE table_name ALTER INDEX index_name [VISIBLE | 見えない];

世界のトップ大学からのオンラインソフトウェア開発コースに登録します。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。
結論
MySQL検索クエリのパフォーマンスは、インデックスを使用することで改善できます。 これらは、テーブルの作成時に定義することも、テーブルがすでに作成されている場合は後で追加することもできます。
この記事では、インデックスとは何か、なぜインデックスが使用されるのかについて簡単に説明しました。 次のセクションでは、MySQLでインデックスを作成する方法、既存のテーブルにインデックスを追加する方法、および一意のインデックスを作成する方法について説明します。
テーブルを変更し、インデックスを作成または削除するためのさまざまなコマンドについても、インデックス情報の表示とともに説明しました。 降順および非表示のインデックスについても簡単に説明しました。
全体として、この記事に記載されているすべてのデータベースを学び、実践的に実践することで、経験を積むことができます。 コースの概要、学習、それに関連する仕事の機会を確認してください。upGradのようなプラットフォームは、Executive PG Program FullStackDevelopmentのIIIT-Bのような評判の高い機関によって設計されたパワー満載のコースを提供します。
