Mysql支援的索引型別

2021-09-11 06:44:21 字數 1247 閱讀 5689

mysql目前主要有以下幾種索引型別:

1.普通索引(index,只有這一種才是純粹的index)等

2.唯一索引(unique index,一般寫成unique key)

3.主鍵索引(必須指定為「primary key」,沒有primary index)

4.組合索引

5.全文索引

mysql中普遍使用b+tree做索引,但在實現上又根據聚簇索引和非聚簇索引而不同。

聚簇索引主要用在innodb儲存引擎中(innodb的主鍵就是聚簇索引),非聚簇索引主要用在myisam儲存引擎中

為什麼要使用索引?

①索引大大減少了儲存引擎需要掃瞄的資料量

②索引可以幫助我們進行排序以避免使用臨時表

③索引可以把隨機i/o變成順序i/o

1.1、b-tree索引的特點

①b-tree索引以b+樹的結構儲存資料

②b-tree索引能夠加快資料的查詢速度

③b-tree索引更適合進行範圍查詢(b-tree索引是順序儲存的)

1.2、適合使用b-tree索引的情景:

①全職匹配的查詢(訂單號:order_sn='9876432119900')

②匹配最左字首的查詢

③匹配列字首的查詢(order_sn   like  '9876%')

④匹配範圍值的查詢(order_sn>'9876432119900'  and  order_sn<'9876432119999')

⑤精確匹配左前列並範圍匹配另外一列

⑥只訪問索引的查詢

1.3、btree索引的使用限制

①如果不是按照索引最左列開始查詢,則無法使用索引

②使用btree索引時不能跳過索引中的列

③not  in 和<>操作無法使用索引

④如果查詢中有某個列的範圍查詢,則其右邊所有列都無法使用索引

2.1、hash索引的特點

①hash索引是基於hash表實現的,只有查詢條件精確匹配hash索引中的所有列時,才能夠使用到hash索引

②對於hash索引中的所有列,儲存引擎都會為每一行計算乙個hash碼,hash索引中儲存的就是hash碼

2.2、hash索引的限制

①hash索引必須進行二次查詢

②hash索引無法用於排序

③hash索引不支援部分索引查詢也不支援範圍查詢

④hash索引中hash碼的計算可能存在hash衝突

Mysql支援的索引簡介

1 b 樹索引 o log n 關於b 樹索引,可以參考 mysql索引背後的資料結構及演算法原理 2 hash索引 a 僅僅能滿足 in 和 查詢,不能使用範圍查詢 b 其檢索效率非常高,索引的檢索可以一次定位,不像b tree 索引需要從根節點到枝節點,最後才能訪問到頁節點這樣多次的io訪問,所...

mysql索引型別介紹 mysql索引型別介紹

索引型別介紹 主鍵索引 primary key 要求關鍵字不能重複,也不能為null,同時增加主鍵約束 主鍵索引定義時,不能命名 唯一索引 unique index 要求關鍵字不能重複,同時增加唯一約束 普通索引 index 對關鍵字沒有要求 全文索引 fulltext key 關鍵字的 不是所有欄...

mysql索引型別介紹 mysql索引型別介紹

b 樹是多路平衡查詢樹,相對於平衡二叉樹,對父結點的直接子結點個數,不再僅限於2,可以指定m 自定義 這樣可以在樹的深度不大量增加的前提下,儲存更多的結點。b 樹是通常在檔案系統中使用。特點 a 樹的每個結點最多有m 自定義 子結點 b 若根結點不是葉子結點,則至少有兩個子結點 c 除根結點外的所有...