• MySQL007MySQL索引结构有哪些,各自的优劣是什么


    索引的数据结构和具体存储引擎的实现有关,MySQL中使用较多的有Hash索引和B+树索引。

    InnoDB引擎使用B+树索引;Memory引擎使用Hash索引。

    B+树是一个平衡多叉树,从根节点到每个叶子节点的高度差不超过1,而且同层级的节点之间有指针连接,在B+树上的常规检索,从根节点到叶子节点的搜索效率基本相当,不会出现大幅波动,而且基于索引的顺序扫描时,也可以利用双向指针快速左右移动,效率非常高。因此,B+树被广泛应用于数据库、文件系统等场景。

    Hash索引就是采用一定的hash算法,把键值换算成新的hash值,检索时不需要像B+树这样从根节点到叶子节点逐级查找,只需一次hash算法即可定位,速度非常快。

    如果是等值查询,那么hash索引有明显优势,前提是健值都是唯一的,如果健值不唯一,那就需要先找到健的位置,然后再扫描链表,找到对应的值。

    如果是范围擦汗寻,hash索引就不好用了,因为原先有序的键值在hash计算后变得不再连续,没办法再利用索引完成范围检索。

    hash索引也不能进行排序或者like匹配。hash索引也不支持多列联合索引得最左匹配规则。

    B+树索引得关键字检索效率比较平均,不像B+树那样波动大,在有大量重复键值得情况下,hash索引效率也是极低的,因为存在hash碰撞的问题。

  • 相关阅读:
    java 多级图的最短路径
    在dos中编译java文件
    apollo客户端的长轮询机制的原理
    Apollo配置中心动态生效实现原理
    jmx_exporter+prometheus+grafana实现kafka metric监控
    XXL-JOB(1) 分布式任务系统选型和XXL-JOB介绍,这篇文章相当的经典呀
    grafana根据不同prometheus server统计数据
    XXL-JOB的使用教程
    普罗米修斯官方文档
    Prometheus标签的管理
  • 原文地址:https://www.cnblogs.com/asenyang/p/15587524.html
Copyright © 2020-2023  润新知