BTree索引和hash索引

爲什麼要使用索引:
·索引大大減少了存儲引擎需要掃描的數據量 Innodb以頁進行過掃描 一頁16KB
·索引可以幫助我們進行排序以避免使用臨時表
·索引可以把隨機IO變成順序IO
索引是不是越多越好:
·索引會增加數據庫的寫操作成本
·太多的索引會增加查詢優化器的選擇時間
Mysql支持的索引類型:
B-tree索引的特點:
a)B-tree索引以B+書結構存儲數據
在這裏插入圖片描述
b)B-tree索引能加快數據的查詢速度
c)B-tree索引更適合範圍查找
在什麼樣的情況下用B樹索引
全值匹配的查詢
匹配最左前綴查詢
匹配列前綴查詢
匹配範圍值的查詢
景精確匹配做前列並範圍匹配另外一列
脂肪紋索引的查詢
BTree索引使用的限制
如果不是按照索引的最左列開始查找,則無法使用索引
使用索引時不能條跳過索引中的列
Not in 和 <>操作無法使用索引
如果查詢中有某個列的範圍查詢,則其右邊所有列都無法使用索引
Hash索引
·Hash索引時基於hash實現的,只有查詢條件精確匹配hash索引中的所有列時,才能使用到hash索引 hash索引只能用於等值查詢
·對於hash索引中的所有列,存儲引擎都會爲每一行計算一個hash碼,hash索引中存儲的就是hash碼
限制:
Hash索引必須進行二次查找
Hash索引無法用於排序
Hash索引不支持部分索引查找也不支持範圍查找
Hash索引中hash碼的計算可能存在衝突

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章