重建、合併、刪除索引

重建索引
  如果表中記錄頻繁地被刪除或插入,儘管表中的記錄總量保持不變,索引空間的使用量會不斷增加。雖然記錄從索引中被刪除,但是該記錄索引項的使用空間不能被重新使用。因此,如果表變化不定,索引空間量會不斷增加,不論表中記錄數量是否增加,這是因爲索引中無效空間會增加。 要回收那些曾被刪除記錄使用的空間,需要使用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 索引已損壞。

  不能刪除約束所需的索引,因此,必須先禁用或刪除相關的約束。

發佈了113 篇原創文章 · 獲贊 3 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章