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

作成済みのインデックスがどのCREATE INDEX文で作成されたかを確認する方法を説明します。sqlite_masterテーブルを照会する方法と.schemaコマンドを使う方法があります。

sqlite_masterテーブルから照会する

次のSQL文を実行します。例では見やすくするため、.modeコマンドで表示モードをlineに変更します。

select * from sqlite_master;
sqlite> select * from sqlite_master;
table|user|user|2|CREATE TABLE user (name text, old integer, address text, colunm name)
index|nameindex|user|3|CREATE UNIQUE INDEX nameindex on user (name)
sqlite> 
sqlite> .mode line
sqlite> 
sqlite> select * from sqlite_master;
    type = table
    name = user
tbl_name = user
rootpage = 2
     sql = CREATE TABLE user (name text, old integer, address text)

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

作成済みのテーブルとインデックスの情報を取得できます。インデックスのデータは次の部分です。

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

インデックスの場合、typeindexです。name列にインデックス名、tbl_name列に対象テーブル名、sql列に作成時のSQL文が表示されます。

インデックスだけを表示するにはWHERE句を使います。

select * from sqlite_master where type = 'index';
sqlite> select * from sqlite_master where type = 'index';
    type = index
    name = nameindex
tbl_name = user
rootpage = 3
     sql = CREATE UNIQUE INDEX nameindex on user (name)

.schemaコマンドを使って照会する

SQLiteの.schemaコマンドでもスキーマ情報を確認できます。

.schema
.schema? TABLE?

引数を省略すると、すべてのテーブルとインデックスのスキーマ情報を表示します。テーブル名を指定すると、そのテーブルまたは一致するインデックス名に関連する情報を表示します。

.schema
sqlite> .schema
CREATE TABLE user (name text, old integer, address text, colunm name);
CREATE UNIQUE INDEX nameindex on user (name);
sqlite>

現在のデータベースにあるテーブルとインデックスのCREATE文が表示されます。