hash索引跟B+ tree索引区别

1.范围区别:

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

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

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

2.排序

        hash索引无法进行排序

3.哈希碰撞问题

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


补充说明:

    B+ tree

    1.存储对象

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

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

         注意:

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

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

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


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容