• 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碰撞的问题。

  • 相关阅读:
    什么是仿射变换
    转:vim比较好的学习资料
    学好C++的五十条建议
    转:美国设置地理系的大学名单
    转:windows下安装emacs
    我学习GNU/Linux: 如何上手
    Linux学习路线图 (转载)
    unix编程学习路线图(转)
    转:C++资源之不完全导引
    Why Linux Programming?
  • 原文地址:https://www.cnblogs.com/asenyang/p/15587524.html
Copyright © 2020-2023  润新知