MYSQL之b+tree和hash的区别简写

刚刚整理完MySQL的笔记,想起记录hash和b+tree的区别,

那么现在顺手写一下。

Hash索引是这样子的:

  举个例子,比如有某个值,A,hash索引会把A转换成hash码存入hash表中,是无序的,大概就是下图这样子,hash的排序是根据hash码来排序,因此对饮的表数据是无序的

 

 

 因此和B+tree不一样,区别如下:

  hash不支持最左原则,b+tree支持。因为hash的联合查询是这样,比如where a=1 and b=2,是把 a=1 and b=2转成一个hash码来进行查询,如果换成 b=2 and a=1,那么hash码将完全不同,索引失效。

  hash不支持范围查询,因为hash是无序的,和b+tree不一样,b树是有序的

  hash不支持order by,因为是无序的

  hash不支持模糊查询

  hash在等值查询上效率比btree高,因为hash可以根据查询条件直接找到需要的数据

posted @ 2021-09-26 11:27  hickup  阅读(213)  评论(0编辑  收藏  举报