MySQLで複合インデックスの作成と使用方法
MySQLでは、CREATE INDEX ステートメントを使用して複合インデックスを作成できます。複合インデックスとは、複数の列をインデックスとして使用するインデックス種別です。複合インデックスを作成する構文は次のとおりです。
CREATE INDEX index_name ON table_name (column1, column2, ...);
このうち、index_name は索引の名前、table_name は索引を作成するテーブルの名前、column1, column2, … は索引に含める列の名前です。
たとえば、ユーザーという名前のテーブルがあったとして、それが ID、ユーザー名、メールアドレスという 3 つの列を含んでいるとします。ユーザー名とメールアドレスという 2 つの列を含む複合インデックスを作成するには、インデックス名が idx_username_email ということにして、次の SQL ステートメントを実行できます。
CREATE INDEX idx_username_email ON users (username, email);
複合インデックスを作成すると、そのインデックスを使用してクエリを高速化できます。たとえば、username が “john” でかつ email が “john@example.com” のレコードをクエリするには、次の SQL ステートメントを使用できます。
SELECT * FROM users WHERE username = 'john' AND email = 'john@example.com';
MySQLは複合インデックスidx_username_emailを使用してクエリを高速化し、クエリのパフォーマンスを向上させます。
複合インデックスの順番は、クエリを行う際に非常に重要です。複合インデックスの一部列のみを使用するクエリの場合は、インデックス内の列の順番に沿ってクエリを行う必要があります。インデックスの性能上の優位性を最大限に活用できます。例えば、上記で作成した複合インデックス idx_username_email では、username 列のみをクエリし、email 列をクエリしない場合、複合インデックスは利用できません。したがって、複合インデックスを作成するときは、実際のクエリ要件に基づいて適切な列の順番を選択する必要があります。