資料庫使用索引的利弊

2021-07-17 03:44:01 字數 1167 閱讀 2070

索引概念:

索引是由使用者建立,能夠被修改和刪除的,實際儲存在資料庫中的物理存在,它是某乙個表中一列或者若干列值的集合和相應的指向表中物理標誌這些值的資料頁的邏輯指標清單。

索引的優點:

第一,通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性。 

第二,可以大大加快資料的檢索速度,這也是建立索引的最主要的原因。 

第三,可以加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。 

第四,在使用分組和排序子句進行資料檢索時,同樣可以顯著減少查詢中分組和排序的時間。 

第五,通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的效能

索引的缺點:

第一,建立索引和維護索引要耗費時間,這種時間隨著資料量的增加而增加。 

第二,索引需要佔物理空間,除了資料表佔資料空間之外,每乙個索引還要佔一定的物理空間,如果要建立聚簇索引,那麼需要的空間就會更大。 

第三,當對表中的資料進行增加、刪除和修改的時候,索引也要動態的維護,這樣就降低了資料的維 護速度。

在任何時候都應該加索引嗎?

這裡有幾個反例:1、如果每次都需要取到所有表記錄,無論如何都必須進行全表掃瞄了,那麼是否加索引也沒有意義了。2、對非唯 一的字段,例如「性別」這種大量重複值的字段,增加索引也沒有什麼意義。3、對於記錄比較少的表,增加索引不會帶來速度的優化反而浪費了儲存空間,因為索 引是需要儲存空間的,而且有個致命缺點是對於update/insert/delete的每次執行,欄位的索引都必須重新計算更新,這就拖慢了速度。

索引的分類: ①

聚集索引,表資料按照索引的順序來儲存的。對於聚集索引,葉子結點即儲存了真實的資料行,不再有另外單獨的資料頁。 ②

非聚集索引,表資料儲存順序與索引順序無關。對於非聚集索引,葉結點包含索引字段值及指向資料頁資料行的邏輯指標,該層緊鄰資料頁,其行數量與資料表行資料量一致。

③在一張表上只能建立乙個聚集索引,因為真實資料的物理順序只可能是一種。如果一張表沒有聚集索引,那麼它被稱為「堆集」(heap

)。這樣的表中的資料行沒有特定的順序,所有的新行將被新增的表的末尾位置。

常見的資料庫索引是b-tree索引,雖然hash

索引效率很高,但是他有很多弊端,比如 hash 索引僅僅能滿足"=","in"和"<=>"查詢,不能使用範圍查詢等,這些弊端導致其不是常見的資料庫索引。

使用資料庫索引的利弊

優點 使用索引可快速訪問資料庫表中的特定資訊。索引是對資料庫表中一列或多列的值進行排序的一種結構,作為通用規則,只有當經常查詢索引列中的資料時,才需要在表上建立索引。索引占用磁碟空間,並且降低新增 刪除和更新行的速度。在多數情況下,索引用於資料檢索的速度優勢大大超過它的。缺點 建立太多的索引將會影響...

資料庫 索引的使用

1.索引的含義和特點 1 索引是單獨的 儲存在磁碟上的資料結構 他們包含著對資料表裡所有記錄的引用指標。2 通過建立唯一索引,可以保證資料庫表中每一行資料的唯一性。3 可以大大的加快資料的查詢速度 4 加速表與表之間的聯絡 5 減少查詢中分組和排序的時間 6 建立索引的維護索引需要耗費時間 並且隨著...

資料庫索引的使用

多列索引1 多列索引2 mysql中的多列索引。1 聯合索引又叫復合索引。對於復合索引 mysql從左到右的使用索引中的字段,乙個查詢可以只使用索引中的一部份,但只能是最左側部分。例如索引是key index a,b,c 可以支援a a,b a,b,c 3種組合進行查詢,但不支援 b,c進行查詢 當...