索引的概念及其優缺點

概念

數據庫中索引(index)的概念與目錄的概念十分類似。如果某列出現在查詢的條件(where)中,而該列的數據是無序的,那麼查詢時只能從第一行開始一行一行地匹配。創建索引就是對某些特定列中的數據排序,生成獨立的索引表。當在某列上創建索引後,如果該列出現在查詢條件中,那麼數據庫系統會自動地引用該索引。先從索引表中查詢出符合條件記錄的ROWID,由於ROWID是記錄的物理地址,因此可以根據ROWID快速地定位到具體的記錄。當表中的數據非常多時,引用索引帶來的查詢效率非常可觀。

在處理一個請求時,數據庫可以使用可用索引有效地找到請求的行。當應用程序經常查詢某一特定行或特定範圍的行時,索引很有用。索引在邏輯上和物理上都獨立於數據。因此,刪除和創建索引對錶或其他索引沒有任何影響。在刪除索引後,所有應用程序仍然可以繼續運行。

優缺點

優點

  1. 大大加快數據的檢索速度,這也是創建索引的主要原因。

  2. 可以加速表和表之間的連接。

  3. 索引在實現數據的參照完整性方面特別有意義,例如,在外鍵列上創建索引可以有效地避免死鎖的發生,也可以防止當更新父表主鍵時,數據庫對字表的全表鎖定。

  4. 可以有效地減少磁盤I/O。

  5. 當使用分組GROUP BY和排序 ORDER BY字句進行數據檢索時,可以顯著減少查詢中分組和排序的時間,大大加快數據的檢索速度。

  6. 創建唯一性索引,可以保證數據庫表中每一行數據的唯一性。

  7. 通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的性能。

缺點

  1. 索引必須創建在表上,不能創建在視圖上。

  2. 創建索引和維護索引要消費時間,這種時間隨着數據量的增加而增加。

  3. 建立索引需要佔用屋裏空間,如果要簡歷聚簇索引,那麼需要的空間會很大。

  4. 當對錶中的數據進行增加、刪除和更新的時候,系統必須要有額外的時間來同時對索引進行更新維護,以維持數據和索引的一致性,所以,索引降低了數據的維護速度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章