关系型DB(MySQL,MyBatis )mysql

hash索引跟B+ tree索引区别

2019-07-24  本文已影响0人  xueseyounai

1.范围区别:

            1.hash索引因为底层是哈希表,数据存储在哈希表中顺序是没有关联的,所以他不适合范围查找,如果要范围查找就需要全表扫描,他只适合全值扫描;

简单的来说就是hash索引适合等值查找,不适合范围查找

            2.B+ tree树索引,底层是多路查询平衡树,节点是天然有序的(左节点小于服节点,右节点大于父节点),所以对于范围查找的时候不需要做全表扫描;

2.排序

        hash索引无法进行排序

3.哈希碰撞问题

        如果存在重复键值对,哈希索引效率就会很低

补充说明:

    B+ tree

    1.存储对象

         1.1 叶子节点,可以存储整行数据,被称为主键索引,也被称作为聚簇索引;

         1.2  叶子节点,可以存储主键的值,被称为非主键索引,也被称作为聚簇索引

         注意:

            主键索引查询速度会比较快,因为主键只会查询一次,因为数据已经存储在节点数据中了

            非主键索引会回表查询多次(回表,就是第一次索引查找查找到的是主键值,然后用主键值去查找主键的树);

            但是有一种情况例外就是覆盖索引,覆盖索引就是当查询语句select 索引列值;就是查询的语句是正好是索引列的值,那么也可以只查询一次

索引最左匹配规则,在联合索引的时候,mysql明明创建了索引,但是却没有用索引,这跟查询优化器相关;

上一篇 下一篇

猜你喜欢

热点阅读