1. 程式人生 > >資料庫索引是什麼 有什麼優缺點

資料庫索引是什麼 有什麼優缺點

資料庫索引是:資料庫索引就像是一本書的目錄一樣,使用它可以讓你在資料庫裡搜尋查詢的速度大大提升。而我們使用索引的目的就是,加快表中的查詢和排序。索引的種類分為普通索引、唯一索引、聚集索引、主鍵索引、全文索引等。

唯一索引:在建立唯一索引時不能具有相同的索引值。

主鍵索引:在我們給一個欄位設定主鍵的時候,它就會自動建立主鍵索引,用來確保每一個值都是唯一的。

聚集索引:我們在表中新增資料的順序,與我們建立的索引鍵值相同,而且一個表中只能有一個聚集索引。

普通索引:它的結構主要以B+樹和雜湊索引為主,主要是對資料表中的資料進行精確查詢。

全文索引:它的作用是搜尋資料表中的欄位是不是包含我們搜尋的關鍵字,就像搜尋引擎中的模糊查詢。

使用索引的優點就是:

  1. 通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性。
  2. 提高資料的搜尋速度,這也是建立索引的最主要的原因。
  3. 加快表與表之間的連線速度,特別是在實現資料的參考完整性方面特別有意義。
  4. 在資訊檢索過程中,若使用分組及排序子句進行時,通過建立索引能有效的減少檢索過程中所需的分組及排序時間,提高檢索效率。
  5. 通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的效能。

使用索引的缺點就是:

  1. 我們建立資料庫的時候,需花費時間去建立維護索引,而且隨著資料量的增加,需要維護它的時間也會增加
  2. 在建立索引的時候會
    佔用儲存空間
  3. 我們需要修改表中的資料時,還需要索引進行維護,所以對資料庫的維護帶來了一定的麻煩。

一般來說,不應該建立索引的的這些列具有下列特點:

第一,對於那些在查詢中很少使用或者參考的列不應該建立索引。這是因 為,既然這些列很少使用到,因此有索引或者無索引,並不能提高查詢速度。相反,由於增加了索引,反而降低了系統的維護速度和增大了空間需求。 
第二,對於那 些只有很少資料值的列也不應該增加索引。這是因為,由於這些列的取值很少,例如人事表的性別列,在查詢的結果中,結果集的資料行佔了表中資料行的很大比 例,即需要在表中搜索的資料行的比例很大。增加索引,並不能明顯加快檢索速度。 


第三,對於那些定義為text, image和bit資料型別的列不應該增加索引。這是因為,這些列的資料量要麼相當大,要麼取值很少。 
第四,當修改效能遠遠大於檢索效能時,不應該建立索 引。這是因為,修改效能和檢索效能是互相矛盾的。當增加索引時,會提高檢索效能,但是會降低修改效能。當減少索引時,會提高修改效能,降低檢索效能。因 此,當修改效能遠遠大於檢索效能時,不應該建立索引。

建立索引的命令: CREATE INDEX 索引名稱  ON 表名稱 (列名稱)

 

建立索引的方法 

建立索引有多種方法,這些方法包括直接建立索引的方法和間接建立索引的方法。直接建立索引,例如使用CREATE INDEX語句或者使用建立索引向導,間接建立索引,例如在表中定義主鍵約束或者唯一性鍵約束時,同時也建立了索引。雖然,這兩種方法都可以建立索引,但 是,它們建立索引的具體內容是有區別的。 
使用CREATE INDEX語句或者使用建立索引向導來建立索引,這是最基本的索引建立方式,並且這種方法最具有柔性,可以定製創建出符合自己需要的索引。在使用這種方式 建立索引時,可以使用許多選項,例如指定資料頁的充滿度、進行排序、整理統計資訊等,這樣可以優化索引。使用這種方法,可以指定索引的型別、唯一性和複合 性,也就是說,既可以建立聚簇索引,也可以建立非聚簇索引,既可以在一個列上建立索引,也可以在兩個或者兩個以上的列上建立索引。

通過定義主鍵約束或者唯一性鍵約束,也可以間接建立索引。主鍵約束是一種保持資料完整性的邏輯,它限制表中的記錄有相同的主鍵記錄。在建立主鍵約束 時,系 統自動建立了一個唯一性的聚簇索引。雖然,在邏輯上,主鍵約束是一種重要的結構,但是,在物理結構上,與主鍵約束相對應的結構是唯一性的聚簇索引。換句話 說,在物理實現上,不存在主鍵約束,而只存在唯一性的聚簇索引。同樣,在建立唯一性鍵約束時,也同時建立了索引,這種索引則是唯一性的非聚簇索引。因此, 當使用約束建立索引時,索引的型別和特徵基本上都已經確定了,由使用者定製的餘地比較小。

當在表上定義主鍵或者唯一性鍵約束時,如果表中已經有了使用CREATE INDEX語句建立的標準索引時,那麼主鍵約束或者唯一性鍵約束建立的索引覆蓋以前建立的標準索引。可以理解為,主鍵約束或者唯一性鍵約束建立的索引的優先 級高於使用CREATE INDEX語句建立的索引。