BTREE索引和HASH索引的区别

时间:2021-08-06 20:09:20

从本质上理解,BTREE是一种有序树,而hash是无序的。所以最关键的区别在于:

1,BTREE可以用来做范围查询,比如大于,小于,而HASH索引仅在"=","IN"和"<=>"查询时效率较高;

2,HASH索引不能避免排序操作;(有order by的时候用btree)

3, HASH索引不能用来做部分索引;(有组合索引的时候用btree)

4, 如果被索引列有很多相同值的时候,hash冲突会比较多,效率可能不如btree; 但是如果都是不同值的时候(唯一),btree因为要进行树遍历查询,而hash可以O(1)查询,则hash的效率要高很多;