インデックスを作成する

SQLite でインデックスを作成する方法、そして作成済のインデックスの一覧を表示する方法について解説します。

(Last modified: )

CREATE INDEX文を使ったインデックスの作成

SQLite でインデックスを作成する時には次の書式を使用します。

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

インデックスはテーブルに含まれるカラムを対象として作成します。単独のカラムに対してインデックスを作成することできますし、複数のカラムを組み合わに対してインデックスを作成することもできます。

それでは実際にインデックスを作成してみます。まず最初に次のようなテーブルを作成しました。

create table user(name text, old integer, address text);

CREATE INDEX文を使ったインデックスの作成(1)

テーブルにサンプル用のデータを追加します。

insert into user values('Yamada', 28, 'Tokyo');
insert into user values('Mori', 22, 'Osaka');
insert into user values('Suzuki', 32, 'Tokyo');
insert into user values('Takagi', 23, 'Tokyo');
insert into user values('Suzuki', 23, 'Osaka');

CREATE INDEX文を使ったインデックスの作成(2)

それでは作成したテーブルの name カラムを対象としたインデックスを作成します。今回はインデックス名を nameindex にしました。次のように実行します。

create index nameindex on user(name);

CREATE INDEX文を使ったインデックスの作成(3)

インデックスの作成が完了しました。

インデックスを利用したデータの検索

インデックスを作成しておくとデータを検索する時に高速になることがありますが、インデックスが作成されている場合とされていない場合でデータの検索の仕方に違いはありません。テーブルに対して検索を行ったとき、インデックスが作成されていれば自動的にインデックスを利用して検索が行われます。

例えばインデックスが作成済のテーブルに対して name カラムを対象とした条件を設定してデータを取得するには次のように行います。

select * from user where name = 'Suzuki';

インデックスを利用したデータの検索(1)

このようにインデックスが作成されているかどうかは意識する必要がありません。

データベースの中に作成されているインデックス一覧

データベースの中に作成されているインデックスの一覧を確認するには SQLite コマンドの .indices を使います。

.indices
.indices ?TABLE?

引数を省略した場合には作成済みのインデックス一覧を表示します。引数にテーブル名を指定した場合には、指定した値に一致するテーブルを対象としたインデックスの一覧を表示します。

では実際に試してみます。

.indices

データベースの中に作成されているインデックス一覧(1)

このページで作成したインデックスが表示されました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。