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」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。
すべてのレベルが、プラチナ以上のプランで遊べます。