重建索引
如果表中記錄頻繁地被刪除或插入,儘管表中的記錄總量保持不變,索引空間的使用量會不斷增加。雖然記錄從索引中被刪除,但是該記錄索引項的使用空間不能被重新使用。因此,如果表變化不定,索引空間量會不斷增加,不論表中記錄數量是否增加,這是因爲索引中無效空間會增加。 要回收那些曾被刪除記錄使用的空間,需要使用Alter index rebuild命令。
重建索引有兩種方法:一種是最簡單的,刪除原索引,然後重建;第二種是使用ALTER INDEX … REBUILD命令對索引進行重建。
需要重建判斷依據:
1.height >4
2.pct_used < 50%
3.del_lf_rows / lf_rows +0.001 > 0.03
合併索引
合併索引只是簡單地將B樹葉子節點中的存儲碎片合併到一起,並不會改變索引的物理結構。
合併索引和重建索引都可以清理索引數據塊中的碎片,但是又有區別:
合併索引:
1.不能將索引移動到其他表空間
2.代價比較低,不需要使用額外的存儲空間
3.只能在B樹的同一子樹種進行合併,不會改變樹的高度
4.可以快速釋放葉子節點中未使用的存儲空間
重建索引:
1.可以將索引移動到其他的表空間
2.代價比較高,需要使用額外的存儲空間
3.重建整個B樹,可以降低B樹的高度
4.可以快遞更改索引存儲參數,如果在重建中指出了ONLINE關鍵字,還可以再重建索引時使用索引。
刪除索引
1. 應用程序不再需要索引時,可將索引刪除。
2. 在大量加載數據前,先刪除索引,加載後再重新創建索引,這樣做的好處有:
– 提高加載性能
– 更有效地使用索引空間
3. 僅定期使用的索引無需不必要的維護,尤其在基於易失表時更是如此。這是 OLTP 系統中的通常情況,在該系統中,年末或季度末會生成特殊的查詢,以收集在總結會上使用的信息。
4. 當在某種類型的操作(如加載)期間出現例程失敗時,可能會將索引標記爲INVALID。在這種情況下,需要刪除並重建索引。
5 索引已損壞。
不能刪除約束所需的索引,因此,必須先禁用或刪除相關的約束。