BTREE索引和HASH索引的区别

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

1,BTREE能够用来作范围查询,好比大于,小于,而HASH索引仅在"=","IN"和"<=>"查询时效率较高;orm

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

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

4, 若是被索引列有不少相同值的时候,hash冲突会比较多,效率可能不如btree; 可是若是都是不一样值的时候(惟一),btree由于要进行树遍历查询,而hash能够O(1)查询,则hash的效率要高不少;ci