ANALYZE と pg_stats の使い方

実行計画のための統計を集める

書き方

ANALYZE 表;
VACUUM ANALYZE 表;
SELECT attname, n_distinct, most_common_vals FROM pg_stats WHERE tablename = '表';
ALTER TABLE 表 ALTER COLUMN 列 SET STATISTICS 数;

ANALYZE は表の中身を調べて、値の種類や多い値の割合を pg_stats に残します。プランナーはこれで行の数を見積もり、Seq Scan か Index Scan かを選びます。データが大きく変わったのに統計が古いと、見積もり(rows=)が外れて遅い計画を選びます。SET STATISTICS で、調べる細かさを列ごとに変えられます。

例

ANALYZE orders;
EXPLAIN SELECT * FROM orders WHERE status = 'new';

実際に打って練習する

PostgreSQL DBA コースの Lv25「統計を集める ANALYZE」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

すべてのレベルが、プラチナ以上のプランで遊べます。

PostgreSQL の管理コマンド一覧(DBA)へ戻る