1. 程式人生 > >數據庫索引(BTree索引和Hash索引)

數據庫索引(BTree索引和Hash索引)

就是 strong 存儲引擎 sql 基於 條件 mysql b+ tree

索引

  索引是為了方便查找我們所需要的數據。

mysql支持的索引數據類型

B-Tree索引的特點

B-Tree索引以B+Tree(樹)的結構存儲數據。

B-Tree索引能夠加快數據的查詢速度;

B-Tree更適合進行範圍查找;

在什麽情況下可以用到B樹索引

全值匹配的查詢如:order_sn=’987654321’

匹配最左前綴的查詢

匹配列前綴查詢

匹配範圍值得查詢

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

只訪問索引的查詢

BTree索引的使用限制

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

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

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

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

Hash索引的特點

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

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

Hash索引的限制

Hash索引必須進行二次查找

Hash索引無法用於排序

Hash索引不支持部分索引查找也不支持範圍查找

Hash索引中Hash碼的計算可能存在Hash沖突

為什麽要使用索引

索引大大減少了存儲引擎需要掃描的數據量

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

索引可以把隨機I/O變為順序I/O

索引是不是越多越好

索引會增加寫操作成本

太多的索引會增加查詢優化器的選擇時間

數據庫索引(BTree索引和Hash索引)