小编Urs*_*les的帖子

在 PostgreSQL 8.4 中重新索引之前应该总是 VACUUM ANALYZE 吗?

每天清晨,pgAgent 作业都会从我的 PostgreSQL 8.4 数据库上的表 B 中刷新表 A 的内容。表 A 包含跨 91 列的大约 140k 条记录,并有两个索引 - 一个作为 PRIMARY KEY 的一部分,另一个作为 POINT PostGIS 几何列上的 GIST 索引。

为了使过程更快一点,作业删除几何列上的索引,然后删除表 A 中的记录并插入表 B 中的记录,然后重新创建索引。这一切都完成了 autovacuum 守护进程在感觉它开始工作时开始工作(在比较作业完成时间和 autovacuum 运行时间的作业统计信息和表统计信息后十分钟左右)。

在这一切发生后,今天早上检查表时,表统计告诉我表大小为 272MB,TOAST 表大小为 8192 字节,索引大小为 23MB。这看起来很大,所以我在表上发出了 REINDEX 命令,索引大小下降到 9832kB。

我的问题是这样的:

当索引(或至少几何列索引)从头开始重新构建时,为什么 REINDEX 明显减少了索引的大小?在建立索引之前,我是否应该确保表已被清空/分析?删除主键上的索引不是其中的一个因素吗?我错过了什么?

postgresql index postgresql-8.4

8
推荐指数
1
解决办法
4230
查看次数

标签 统计

index ×1

postgresql ×1

postgresql-8.4 ×1