在某些情况下,定期使用 REINDEX 命令或一系列单独的重建步骤来重建索引是值得的。
已完全清空的 B 树索引页将被回收以供重新使用。但是,仍然存在空间使用效率低下的可能性:如果一个页上的除少数几个索引键之外的所有键都被删除,则该页仍将被分配。因此,在每个范围内大多数(但不是全部)键最终都被删除的使用模式下,空间利用率会很差。对于此类使用模式,建议定期重新索引。
非 B 树索引中膨胀的可能性尚未得到充分的研究。在使用任何非 B 树索引类型时,定期监控索引的物理大小是一个好主意。
此外,对于 B 树索引,新构建的索引访问速度略快于已更新多次的索引,因为在新建索引中,逻辑上相邻的页通常也在物理上相邻。(此考虑因素不适用于非 B 树索引。)定期重新索引以提高访问速度可能是值得的。
REINDEX 可在所有情况下安全且轻松地使用。默认情况下,此命令需要 ACCESS EXCLUSIVE
锁,因此通常最好使用其 CONCURRENTLY
选项执行它,该选项只需要 SHARE UPDATE EXCLUSIVE
锁。
如果您在文档中看到任何不正确的内容,与您对特定功能的体验不符,或者需要进一步澄清,请使用 此表单 报告文档问题。