インデックススキーマ(構造)の確認
テーブルを作成した場合と同じように、インデックスを作成した時もどのようなCREATE INDEX文が実行されたのかがSQLiteの特別なテーブル「sqlite_master」テーブル内に格納されています。このテーブルのデータを取得することで、どのようなCREATE INDEX文が実行されたのか確認することができます。
では次のようにSELECT文を実行して下さい。
select * from sqlite_master;
次のようなデータが取得できます。(事前に「.mode」コマンドで「mode」を「line」に変更しています)。
sqlite> select * from sqlite_master;
type = table
name = goods
tbl_name = goods
rootpage = 2
sql = CREATE TABLE goods(id, name)
type = index
name = nameindex
tbl_name = goods
rootpage = 3
sql = CREATE UNIQUE INDEX nameindex on goods(name)
sqlite>
「sqlite_master」テーブルには2つの行が含まれています。「type」カラムの値が「table」のものはテーブル、「index」のものはインデックスです。インデックスのものを確認すると、インデックス名や対象のテーブル名、そしてインデックスを作成する時に実行されたSQL文を確認することができます。
このように「sqlite_master」テーブルを参照すれば作成済みのテーブルやインデックスに関する情報を取得できます。特定のインデックスに関する情報だけを取得したい場合はWHERE句と組み合わせて下さい。
.schemaコマンド
スキーマに関する情報だけ取得したい場合にはSQLiteコマンドの「.schema」でも確認できます。
.schema ?TABLE?
引数を省略すれば全てのテーブルやインデックスのスキーマ情報を表示します。また引数にテーブル名を指定すると、テーブル名に一致するテーブルや指定したテーブル名を対象としたインデックスだけのスキーマ情報を表示することができます。