実行することになっていますANALYZE myview;
を実行した後、PostgreSQL 9.6+マテリアライズドビューでREFRESH MATERIALIZED VIEW CONCURRENTLY myview;
?
それとも役に立たないのですか(おそらくインデックス統計は更新時にすでに更新されていますか?)
テーブル統計はnotが自動的に更新されます。
CONCURRENTLY
オプションで更新した場合、変更されません。
CONCURRENTLY
がない場合、テーブルに新しいファイルが書き込まれ、システムカタログpg_class
の基本カウントrelpages
とreltuples
が結果的に0
にリセットされます。ただし、pg_statistic
の(列ごとの)テーブル統計は変更されません。
Postgres 9.6でクイックテストを実行して確認しました。
場合によっては(クエリプランが現在の統計にあまり依存しない場合)、時間を節約し、ANALYZE
をまったく実行しないほうがよい場合があります。その他の場合はすべて、REFRESH
の直後に手動でANALYZE myview;
をスケジュールする必要があります。または、autovacuumが作動するまで待機します。これは、十分な行が変更された場合にのみ発生します(CONCURRENTLY
は実際にMVでDDLコマンドを実行して、変更された行にのみ影響を与えます)。