
# 未收集统计信息导致查询性能差
#### 问题现象
SQL查询性能差，对语句执行EXPLAIN VERBOSE时有Warning信息。
#### 原因分析
查询中涉及到的表或列没有收集统计信息。统计信息是优化器生成执行计划的基础，没有收集统计信息，优化器生成的执行计划会非常差，如果统计信息未收集，会导致多种多样表现形式的性能问题。例如，等值关联走NestLoop，大表broadcast，集群CPU持续增高等问题。
#### 分析过程
1. 通过EXPLAIN VERBOSE/EXPLAIN PERFORMANCE打印语句的执行计划。 
   执行计划中会有语句未收集统计信息的告警，并且通常E-rows估算非常小。
   ![](https://support.huaweicloud.com/trouble-dws/figure/zh-cn_image_0000001119758120.png "点击放大")
   
   
2. 上述例子中，在打印的执行计划中有Warning提示信息，提示有哪些列在这个执行计划中用到了，但是这些列没有统计信息。 
   在CN的pg_log日志中也会有类似的Warning信息。同时，E-rows会比实际值小很多。
   
   
 
#### 处理方法
周期性地运行ANALYZE，或者在对表的大部分内容执行更改操作后立即执行ANALYZE。
