Hash索引
是通过计算数据的Hash值来定位数据所存储的位置,所以查询数据的时候可以直接定位到数据所在位置,不需像B-tree一样通过二叉树的方式一次次的寻找数据,查询的效率非常高。但是为什么很少使用Hash索引呢?
缺点:
- 只能查询指定数据,无法进行范围查询,像< >= in 这类的搜索是无法实现的
- 无法进行数据的排序,因为数据的Hash值的大小不代表数据本身的大小
- 不能通过索引来避免全表扫描,因为无法圈定出范围,所有只能扫描全部数据
BTree索引
是非常优秀的索引结构,通过B+树的结构来实现,是通过提取索引字段建立索引树,从而在查询的时候定位到数据所在缓存页,来实现数据的范围筛选操作。
并且like语句左侧没有通配符“zhang%”的时候也能使用索引。非常适合用来做大量数据的排序和范围查询等操作。