Skip to content

25.2。常规重新索引#

在某些情况下,使用REINDEX命令或一系列单独的重建步骤定期重建索引是值得的。

已变得完全空闲的 B 树索引页将被回收以供重新使用。但是,仍然有可能低效地使用空间:如果页面上的所有索引键除了少数几个已被删除,则该页面仍将被分配。因此,最终将删除每个范围中的大多数(但不是全部)键的使用模式将导致空间利用率低下。对于此类使用模式,建议定期重新索引。

尚未很好地研究非 B 树索引中膨胀的可能性。在使用任何非 B 树索引类型时,定期监视索引的物理大小是一个好主意。

此外,对于 B 树索引,新构建的索引访问速度比多次更新的索引稍快,因为在新建索引中逻辑上相邻的页面通常在物理上也是相邻的。(此注意事项不适用于非 B 树索引。)定期重新索引可能值得,仅仅是为了提高访问速度。

REINDEX在所有情况下都可以安全且轻松地使用。此命令默认情况下需要ACCESS EXCLUSIVE锁,因此通常最好使用其CONCURRENTLY选项执行它,该选项仅需要SHARE UPDATE EXCLUSIVE锁。