Developer

【SQL基礎】インデックスの作成
2021.09.30
Lv1

【SQL基礎】インデックスの作成

インデックスの作成


前回、インデックスについて紹介しました。

インデックスはデータの並び替えをして検索スピードを速くすることができるものになります。

インデックスについて基本的な内容が分からない方はこちらの記事を参照してください。

 

インデックスを作成するためには以下の書式を使用します。

CREATE INDEX インデックス名 ON テーブル名 (カラム名,カラム名…)

インデックスは指定したテーブルにあるカラム名を対象に作成されます。

カラム名を一つにした場合は、単独のカラムに対するインデックスになりますし、カラム名を複数指定することもできます。

 

インデックスの作成方法


今回は以下のteachersテーブルに対して「teacher_id」と「name」カラムのインデックスを作成します。

インデックスの作成は以下のように行います。


CREATE INDEX t_index ON teachers(teacher_id,name);

これでインデックスの作成は完了です。

作成したインデックスの情報を参照するには以下書式を使います。

SHOW INDEX FROM テーブル名;

今回teachersテーブルに作成したインデックスを確認する場合


SHOW INDEX FROM teachers;

赤枠で囲ってある部分がインデックス情報です。

インデックス名がt_indexで「teacher_id」と「name」カラムが対象になっています。

 

インデックスによるデータ検索


インデックスを作成すると検索が速くなるのは説明しましたが、データを検索する時に何か特別な検索方法をするわけではありません。インデックスを作成した場合と作成していない場合で検索方法は変わりません。適用できるインデックスがある場合にデータ検索すると、自動的にインデックスを使用して検索されます。

例えば、上記でインデックスを作成したteachersテーブルに対してnameカラムの値を取得するには通常のSQL文と同様に行います。


SELECT * FROM teachers WHERE name = 'シュウタ';

通常のSELECT文と変わらないので、データ取得する際はインデックスを気にする必要がありません。

 

今回の学習ポイント


・インデックスを作成するとき、対象になるカラムは単独でも複数でもよい。

・インデックスが作成されていても作成されていなくてもデータの取得方法は変わらない。

 


練習問題

問題として使用するデータは「SQL練習問題」のものを使用しています。

以下からダウンロード可能です。

以下のようにしてworldcup2014データベースを作成し、インポートしてください。

※worldcup2014.zip解凍してできるworldcup2014.sqlファイルをCドライブ直下に配置した場合。

worldcup2014.sql

[sql]

CREATE DATABASE worldcup2014;

USE worldcup2014;

source C:\worldcup2014.sql

[/sql]

 

  1. playersテーブルのインデックスを作成してください。対象カラムはidとnameです。
答え
[sql]

CREATE INDEX P_name ON players(id,name);

[/sql]

以下のようにインデックスが作成できていればOKです。

以上、インデックスの作成についてでした。

次回は「インデックスの更新」です。

 

連載目次リンク

SQL基礎 連載目次

関連する連載リンク

SQL練習問題 一覧まとめ