インデックススキーマ(構造)を確認する

SQLite で作成済のインデックスがどのような CREATE INDEX 文を使って作成されたのかについて確認する方法について解説します。sqlite_master テーブルを利用する方法と .schema コマンドを使用する方法の2つの方法があります。

(Last modified: )

sqlite_masterテーブルから取得する

最初に sqlite_master テーブルから取得する方法です。次のような SQL 文を実行して下さい。

select * from sqlite_master;

sqlite_masterテーブルから取得する(1)

作成済のテーブルやインデックスに関するデータが取得できます。今回取得したデータの中でインデックスに関するデータは次のものです。

    type = index
    name = nameindex
tbl_name = user
rootpage = 3
     sql = CREATE UNIQUE INDEX nameindex on user(name)

type カラムにはインデックスの場合は index と表示されます(テーブルの場合は table です)。 name カラムにはインデックス名、 tbl_name カラムにはインデックスの対象のテーブル名、 sql カラムにはインデックスを作成した時の SQL 文が表示されます。

インデックスに関するデータだけを表示するには、 WHERE 句を使い次のように実行します。

select * from sqlite_master where type = 'index';

sqlite_masterテーブルから取得する(2)

.schemaコマンドを使って取得する

スキーマに関する情報だけ取得したい場合には SQLite コマンドの .schema でも確認できます。

.schema
.schema ?TABLE?

引数を省略すれば全てのテーブルやインデックスのスキーマ情報を表示します。また引数にテーブル名を指定すると、インデックス名に一致するテーブルや指定したテーブル名を対象としたインデックスだけのスキーマ情報を表示することができます。

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

.schema

.schemaコマンドを使って取得する(1)

現在作成されているテーブルおよびインデックスに関する CREATE 文が表示されました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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