MySQL 速習チュートリアル

MySQL CREATE INDEX 文

1. MySQL CREATE INDEX 文の概要

CREATE INDEX ステートメントは、データベース内のテーブルに**インデックス(索引)**を作成し、データの取得速度を向上させるために使用されます。

ユーザーがインデックスを直接見ることはできません。インデックスは、あくまで検索やクエリ(抽出処理)のパフォーマンスを高速化するために内部的に利用されるものです。

       注意: インデックスが設定されたテーブルを更新(INSERTUPDATEDELETE)する場合、インデックス自体も更新する必要があるため、インデックスがないテーブルよりも処理に時間がかかります。そのため、インデックスは頻繁に検索の条件に使用されるカラムに対してのみ作成するようにしてください。

2. インデックスの種類:非ユニークとユニーク

MySQL には主に2種類のインデックスがあります:

  • CREATE INDEX: 非ユニークインデックスを作成します。値の重複が許可されます。
  • CREATE UNIQUE INDEX: ユニークインデックスを作成します。値の重複は許可されません。

3. インデックス作成の構文

非ユニークインデックスを作成するための基本構文は以下の通りです。

3.1 CREATE INDEX 構文

CREATE INDEX index_name
ON table_name (column1, column2, ...);

3.2 CREATE UNIQUE INDEX 構文

値の一意性を強制したい場合は、以下の構文を使用します。

CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);

4. MySQL CREATE INDEX の実行例

次の SQL は、"Persons" テーブルの "LastName" カラムに "idx_lastname" という名前の非ユニークインデックスを作成する例です。

実行例

/* LastName カラムにインデックスを作成 */
CREATE INDEX idx_lastname
ON Persons (LastName);

複数のカラムを組み合わせたインデックスを作成したい場合は、括弧内にカラム名をカンマ区切りで列挙します。

実行例(複数カラム)

/* LastName と FirstName の組み合わせにインデックスを作成 */
CREATE INDEX idx_lname_fname
ON Persons (LastName, FirstName);

5. DROP INDEX 文(インデックスの削除)

作成したインデックスを削除するには、DROP INDEX ステートメント(ALTER TABLE 経由)を使用します。

構文

ALTER TABLE table_name
DROP INDEX index_name;