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