收集统计信息
AnalyticDB PostgreSQL的优化器在进行查询优化时,会根据统计信息进行查询代价估算和优化。如果参与查询的表没有收集过统计信息或统计信息过旧,系统将按照默认值或老旧的统计信息进行优化,往往无法生成最优执行计划。所以,建议在大批量数据加载完成,或者有较多数据(超过20%)更新后,进行统计信息收集。
采用ANALYZE命令收集统计信息时,可以对所有表收集、对某个表的所有列收集或对表的指定列收集。对于大部分用户,建议采用对所有表收集或对表的所有列收集的方式。如果想对统计信息收集环节做精细化控制,可以采用对表的指定列收集方式,针对关联(JOIN)的条件列、过滤条件列、有索引的列进行统计信息收集。
示例
收集所有表的统计信息示例(推荐数据大批量入库后使用): ANALYZE;
收集表t的所有列的统计信息示例(推荐某个表插入/更新/删除较多数据后使用): ANALYZE t;
收集表t的a列的统计信息示例: ANALYZE t(a);