PostgreSQL で使われていないインデックスを調べる

2007/12/19 7:18am

PostgreSQL で使われていないインデックスを調べる方法について。いつも忘れるのでこちらにも書く。

統計情報の収集

まずは、インデックスの使用状況を統計情報として残すよう、PostgreSQL の設定ファイル postgresql.conf で以下の変数を true にする。

各々の詳細についてはリンク先の PostgreSQL ドキュメントを参照してほしい。

統計情報ビュー

収集した統計情報の表示のために多くのビューが用意されている

使われていないインデックスを調べるには pg_stat_user_indexes を見るのが手っ取り早い。

select indexrelname, idx_scan, idx_tup_read, idx_tup_fetch
from pg_stat_user_indexes
where
  indexrelname not like '%_pkey' and
  idx_scan = 0;

プライマリーキーっぽいものは除いてみた。

indexrelname がインデックスの名前、relname がテーブルの名前。なので、特定のテーブルのインデックスに絞ることも簡単にできる。

select indexrelname, idx_scan, idx_tup_read, idx_tup_fetch
from pg_stat_user_indexes
where
  relname = 'users';