PostgreSQLでindex scanの回数を調べる

コマンドを忘れるので備忘録として残します

Indexの確認

登録されているindexの一覧

SELECT schemaname, tablename, indexname, indexdef
FROM pg_indexes
WHERE schemaname = 'xxxx_schema';

結果

schemanametablenameindexnameindexdef
xxx_schemaxxx_tablexxx_table_idxCREATE INDEX xxx_table_idx ON xxx_schema.xxx_table USING btree (test_column1)
xxx_schemayyy_tableyyy_table_idxCREATE INDEX yyy_table_idx ON xxx_schema.yyy_table USING btree (test_column1)

index scanの確認

登録されているindexごとのscan情報一覧

select * from pg_stat_user_indexes;

結果

relidindexrelidschemanamerelnameindexrelnameidx_scanidx_tup_readidx_tup_fetch
1702817043xxx_schemaxxx_tablexxx_table_idx963116660833032
1703317044xxx_schemayyy_tableyyy_table_idx821476484647
xxx_table_idxに対してindex scanが96回実施されたことがわかる

idx_scan: インデックススキャン実施回数
idx_tup_read: インデックススキャンによって読み取られたインデックスエントリの数
idx_tup_fetch: IndexScanによって読み取られたエントリの数 (BitmapScan によるものを除く)

まとめ

indexを貼ってもindex scanしてくれない事象に遭遇して、これらの調査をしました
explain(実行計画)の読み解き方も学びたいな…