我正在使用 PostgreSQL 8.4.13 数据库。
最近我在一个表中有大约 8650 万条记录。我几乎全部删除了——只剩下 5000 条记录。我跑了
reindex
和
vacuum analyze
删除行后。但是我仍然看到该表正在占用很大的磁盘空间:
jbossql=> SELECT pg_size_pretty(pg_total_relation_size('my_table'));
pg_size_pretty
----------------
7673 MB
此外,剩余行的索引值仍然很高——比如在百万范围内。我想在清理和重新索引之后,剩余行的索引将从 1 开始。
我阅读了文档,很明显我对重新索引的理解是有偏差的。
但尽管如此,我的意图是在删除操作后减小表大小并降低索引值,以便SELECT
从表中读取操作()不会花费那么长时间 - 目前我需要大约 40 秒才能从我的桌子。
更新
谢谢欧文。我已经更正了 pg 版本号。
vacuum full
为我工作。我在这里有一个后续问题:
删除大部分大表后重新启动现有行的主键数