SQLでインデックスを確認する

PostgreSQLで指定したテーブルのインデックスを確認するにはpg_indexesシステムカタログをSELECTする。

SELECT * FROM pg_indexes WHERE tablename = 'テーブル名';

例えばusersテーブルのインデックスを確認するには以下のように実行する。

SELECT * FROM pg_indexes WHERE tablename = 'users';
 schemaname | tablename | indexname  | tablespace |                            indexdef
------------+-----------+------------+------------+-----------------------------------------------------------------
 public     | users     | users_pkey |            | CREATE UNIQUE INDEX users_pkey ON public.users USING btree (id)
 (1 row)

pg_indexesシステムカタログには以下のカラムが含まれる。

  • schemaname: スキーマ名
  • tablename: テーブル名
  • indexname: インデックス名
  • tablespace: テーブルスペース
  • indexdef: インデックスの定義

\dコマンドでインデックスを確認する

PostgreSQLのpsqlコマンドラインツールでは\dコマンドを使う。

\d テーブル名

例えばusersテーブルのインデックスを確認するには以下のように実行する。

\d users
                             Table "public.users"
 Column  |  Type   | Collation | Nullable |              Default
---------+---------+-----------+----------+-----------------------------------
 id      | integer |           | not null | nextval('users_id_seq'::regclass)
 name    | text    |           |          |
 email   | text    |           |          |
 address | text    |           |          |
Indexes:
    "users_pkey" PRIMARY KEY, btree (id)

末尾のIndexes:以下にインデックスが表示される。