http://www.bestbrains.dk/Blog/2010/03/25/HowToAssertThatYourSQLDoesNotDoFullTableScans.aspxで説明されているのと同様のことをしたいのですが、そのためには、全表スキャンを追跡するためにpostgresが必要です。します。postgresにそのようなものはありますか?
質問する
3865 次
2 に答える
6
pg_stat_get_numscans(oid)
(テーブルでの順次スキャンの数)と統計コレクター(一般)を見てください。
于 2010-03-26T15:23:58.853 に答える
1
以下のクエリを使用します。インデックスの使用量が99を超える場合は、問題ありません。したがって、7000行を超え、インデックスの使用量が99未満のテーブルについて心配します。
SELECT
relname table_name,
idx_scan index_scan,
seq_scan table_scan,
100*idx_scan / (seq_scan + idx_scan) index_usage,
n_live_tup rows_in_table
FROM
pg_stat_user_tables
WHERE
seq_scan + idx_scan > 0 and 100 * idx_scan / (seq_scan + idx_scan) < 99 and
n_live_tup > 70000
ORDER BY
4 DESC;
もちろん、クエリとその計画を理解する必要があります。場合によっては、テーブルスキャンをより最適化することができます。
于 2021-11-22T14:20:44.453 に答える