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 除根結點外的所有...