首页/数据/SQL 速查/ANALYZE 更新统计信息
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条函数速查60 条变更与事务52 条
性能与执行计划72 条

ANALYZE 更新统计信息

优化器依赖统计信息估算行数:数据大改动后计划变差,先 ANALYZE 再谈改写与加索引。

SQL 速查数据更新于 2026-10-12

示例

示例
ANALYZE orders;            -- 收集单表统计
ANALYZE VERBOSE orders;    -- 输出进度信息

-- 查看最近一次统计收集时间与未分析变更量
SELECT relname, last_analyze, last_autoanalyze,
       n_live_tup, n_mod_since_analyze
FROM pg_stat_user_tables
WHERE relname = 'orders';
触发时机大批量导入或删除后;估算行数明显偏离时
自动收集autovacuum 负责 autoanalyze,按变更比例触发(autovacuum_analyze_scale_factor)
多列相关性列间存在相关性(如城市与邮编)时可用 CREATE STATISTICS 扩展统计
ANALYZE 只读取样本、不阻塞读写,可随时执行;采样量由 default_statistics_target 控制。

易错点

  • 导入几百万行后不 ANALYZE:优化器仍按旧分布选择计划,可能持续走错访问方式
  • 完全依赖 autoanalyze 兜底:瞬时大批量变更后建议手动 ANALYZE 一次,不等自动任务周期

数据来源与参考

  • PostgreSQL Documentation §13.4.3 Updating Planner Statistics
  • PostgreSQL Documentation §25.1 Routine Vacuuming
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌