読者です 読者をやめる 読者になる 読者になる

覚えたら書く

IT関係のデベロッパとして日々覚えたことを書き残したいです。 twitter: @yyoshikaw

PostgreSQLでindex作ったり削除したり

PostgreSQLでのindexの作成方法や削除方法など


indexの作成

以下の構文でできます

CREATE INDEX {index名} ON {Table名} ({Column名});

これにより作成されるindexの種類はbtreeになります。


■実行例

SAMPLEDB=> CREATE INDEX sampletbl1_column1_idx ON sampletbl1 (column1);
CREATE INDEX


ユニークindexにする場合

CREATE UNIQUE INDEX {index名} ON {Table名} ({Column名});


indexの種類を指定する場合

indexの種類をbtree以外にしたい場合はUSINGで指定します。
例えばGiSTのindexを使用する場合は以下のようになります

CREATE INDEX {index名} ON {Table名} USING GIST ({Column名});


indexの作成(対象indexが存在しない場合だけ作成を行う)

対象のindexが存在しない場合だけ作成する(存在する場合でもエラーにならないようにする)には以下の構文

CREATE INDEX IF NOT EXISTS {index名} ON {Table名} ({Column名});


indexの削除

以下の構文でできます。CREATE INDEXで指定したindex名を指定して

DROP INDEX {index名};


■実行例

SAMPLEDB=> DROP INDEX sampletbl1_column1_idx;
DROP INDEX

indexの削除(対象indexが存在する場合だけ削除を行う)

対象のindexが存在する場合だけ削除する(存在しない場合でもエラーにならないようにする)には以下の構文

DROP INDEX IF EXISTS {index名};


indexの状況確認

psqlで以下操作をすることでindexの状況を各印できます


indexの一覧

以下でindexの一覧を確認できます

\di

■実行例

SAMPLEDB=> \di
                                 List of relations
 Schema |                 Name               | Type  | Owner  |     Table                
--------+------------------------------------+-------+--------+------------------
 public | sampletbl1_column1_idx             | index | user   | sampletbl1
 public | sampletbl1_column2_idx             | index | user   | sampletbl1
 public | sampletbl2_columnA_idx             | index | user   | sampletbl2
 public | sampletbl2_columnB_idx             | index | user   | sampletbl2


indexの詳細確認

以下でindexの詳細を確認できます

\d {index名}

■実行例

SAMPLEDB=> \d sampletbl1_column2_idx 
         Index "public.sampletbl1_column2_idx"
       Column       |  Type   |     Definition     
--------------------+---------+--------------------
 id                 | bigint  | id
 column2            | integer | column2
primary key, btree, for table "public.sampletbl1"