在某些情況下,定期使用 REINDEX 指令或一系列個別的重建步驟來重建索引是值得的。
已經完全空的 B-tree 索引頁面會被回收以供重複使用。但是,仍然存在空間使用效率低下的可能性:如果頁面上除了少數幾個索引鍵之外的所有索引鍵都已刪除,則該頁面仍將被分配。因此,在每個範圍內的大部分(但並非全部)鍵最終都被刪除的使用模式下,空間利用率會很差。對於此類使用模式,建議定期重建索引。
非 B-tree 索引中膨脹的可能性尚未得到充分研究。當使用任何非 B-tree 索引類型時,最好定期監控索引的物理大小。
此外,對於 B-tree 索引,新建立的索引比已更新多次的索引的存取速度稍快,因為邏輯上相鄰的頁面通常在新建立的索引中也是物理上相鄰的。(此考量不適用於非 B-tree 索引。)僅為了提高存取速度而定期重建索引可能是值得的。
REINDEX 可以在所有情況下安全且輕鬆地使用。預設情況下,此命令需要 ACCESS EXCLUSIVE
鎖定,因此通常最好使用其 CONCURRENTLY
選項來執行它,該選項僅需要 SHARE UPDATE EXCLUSIVE
鎖定。
如果您在文件中發現任何不正確、與您使用特定功能的體驗不符或需要進一步澄清的地方,請使用此表單回報文件問題。