資料庫索引

2021-09-25 03:55:08 字數 2094 閱讀 2734

索引的概念

索引是對資料庫表中一列或多列的值進行排序的一種資料結構,使用索引可快速訪問資料庫表中的特定資訊。索引的乙個主要目的就是加快檢索表中資料,亦即能協助資訊搜尋者盡快的找到符合限制條件的記錄id的輔助資料結構。

索引的使用場景

經常需要搜尋的列上。

作為主鍵的列上。

經常用在連線的列上,這些列主要是一些外來鍵,可以加快連線的速度。

經常需要根據範圍進行搜尋的列上。

經常需要排序的列上。

不適合用在查詢中很少用到的列。

不適合用在那些具有很少資料值的列.比如人事表的性別列,boolean資料型別的列。

不適合用在那些定義為text,image這些資料量相當大的列。

不適合用在當對修改效能的要求遠遠大於搜尋效能時.因為當增加索引時,會提高搜尋效能,但是會降低修改效能。

不適合含有null值,復合索引中只要有一列含有null值,那麼這一列對於此復合索引就是無效的。

不適合對索引字段使用like 「%aaa%」 ,如果非使用不可like 「aaa%」可以使用索引。

不適合在列上進行計算,這樣可能會導致索引失效。

不適合使用not in和<>操作

索引的優點

加快資料的檢索速度。

在資訊檢索過程中,若使用分組及排序子句進行時,通過建立索引能有效的減少檢索過程中所需的分組及排序時間,提高檢索效率。

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

索引的缺點

建立索引和維護索引要耗費時間,這種時間隨著資料量的增加而增加,如對表進行insert、update和delete。

實際上索引也是一張表,該錶儲存了主鍵與索引欄位.索引需要佔物理空間。

索引的分類

聚簇索引(innodb 主鍵使用的是聚簇索引):表資料按照索引的順序來儲存的,也就是說索引項的順序與表中記錄的物理順序一致。對於聚集索引,葉子結點即儲存了真實的資料行,不再有另外單獨的資料頁。一般情況下主鍵會預設建立聚簇索引,在一張表上最多只能建立乙個聚集索引,因為真實資料的物理順序只能有一種。

非聚簇索引(myisam 不管是主鍵索引,還是二級索引使用的都是非聚簇索引):表資料儲存順序與索引順序無關。對於非聚集索引,葉結點包含索引字段值及指向資料頁資料行的邏輯指標,其行數量與資料表行資料量一致。

建立索引

1.  create index 索引名稱 on 表名稱 (列名稱); 簡單索引

2.  create unique index 索引名稱 on 表名稱 (列名稱) ;唯一索引

3.  create index 索引名稱 on 表名稱 (列名稱, 列名稱);組合索引

4.  create index 索引名稱 on 表名稱 (列名稱 desc) ; 降序索引

使用組合索引時需注意:只有第乙個字段出現在查詢條件中,該索引才可能被使用。因此將應用頻度高的字段,放置在復合索引的前面,會使系統最大可能地使用此索引,發揮索引的作用。

資料庫索引的資料結構基礎b+樹

b+ 樹是一種樹資料結構,通常用於資料庫和作業系統的檔案系統中。b+ 樹的特點是能夠保持資料穩定有序,其插入與修改擁有較穩定的對數時間複雜度。b+ 樹元素自底向上插入,這與二叉樹恰好相反。

1. 所有關鍵字都出現在葉子結點的鍊錶中(稠密索引),且鍊錶中的關鍵字恰好是有序的;

2. 不可能在非葉子結點命中;

3. 非葉子結點相當於是葉子結點的索引(稀疏索引),葉子結點相當於是儲存(關鍵字)資料的資料層;

4. 非葉子結點的子樹指標與關鍵字個數相同;

5. 為所有葉子結點增加乙個鏈指標;

6. 所有關鍵字都在葉子結點出現

7. 所有的葉子節點和相連的節點使用鍊錶相連,便於區間查詢和遍歷;

8. 資料庫中的索引一般是在磁碟上,資料量大的情況可能無法一次裝入記憶體,b+樹的設計可以允許資料分批載入,同時樹的高度較低,提高查詢效率;

資料庫 資料庫索引

索引是儲存引擎用於快速找到記錄的一種資料結構。索引以檔案的形式儲存在磁碟中。索引可以包含乙個或多個列的值。儲存引擎查詢資料的時候,先在索引中找對應值,然後根據匹配的索引記錄找到對應的資料行。1.b tree索引 2.雜湊索引 myisam和innodb儲存引擎 只支援btree索引,也就是說預設使用...

資料庫mysql索引 資料庫 mysql索引

mysql 索引 mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可...

資料庫索引

索引 索引列唯一索引 主鍵索引 聚簇索引和非聚簇索引 如何建立索引 如何刪除索引 使用索引可快速訪問資料庫表中的特定資訊。索引是對資料庫表中一列或多列的值進行排序的一種結構,例如 employee 表的姓 lname 列。如果要按姓查詢特定職員,與必須搜尋表中的所有行相比,索引會幫助您更快地獲得該資...