1. 表统计信息:
- 行数估计: 统计信息包括表中行的估计数量。这有助于规划器决定使用哪个查询计划。
- 列值的分布: PostgreSQL 统计信息中还包括有关列值分布的信息,例如最小值、最大值和直方图。这些信息对于确定最佳的索引和过滤条件非常重要。
2. 索引统计信息:
- 唯一性估计: 统计信息包括索引中唯一值的估计数量,这有助于规划器决定是否使用索引来执行查询。
- 列值的分布: 类似于表统计信息,索引统计信息也包括列值的分布,以帮助规划器优化查询计划。
3. 系统表统计信息:
- pg_statistic 表: 包含关于表的列的统计信息。这些信息用于估计查询条件的选择性,以及为了确定最佳的连接顺序和连接方法。
4. 系统表 pg_class 和 pg_index:
- 表大小和索引信息: 规划器使用这些表中的信息来估计表的大小、索引的大小以及它们之间的关系,从而影响查询计划的选择。
5. 系统表 pg_namespace:
- 命名空间信息: 规划器使用命名空间信息来确定表和索引的所属关系,以便正确选择执行计划。
这些统计信息可以通过运行 ANALYZE 命令来收集和更新。例如:
ANALYZE your_table;
定期更新统计信息对于确保规划器做出准确的决策非常重要。如果表的数据分布或查询模式发生变化,建议手动运行 ANALYZE 来更新统计信息,或者配置自动化的统计信息更新任务。
转载请注明出处:http://www.zyzy.cn/article/detail/8237/PostgreSQL