54、Mysql索引的数据结构,各自优劣

news/2024/12/22 9:14:32/

Mysql索引的数据结构,各自优劣

  • 索引的数据结构和具体存储引擎的实现有关
  • 在MySQL中使用较多的索引有Hash索引,B+树索引等
  • InnoDB存储引擎的默认索引实现为: B+树索引。
  • 对于哈希索引来说,底层的数据结构就是哈希表,因此在绝大多数需求为单条记录查询的时候,可以选择哈希索引,查询性能最快,其余大部分场景,建议选择BTree索引。

B+树

  • B+树是一个平衡的多叉树,从根节点到每个叶子节点的高度差值不超过1,而且同层级的节点间有指针相互链接在B+树上的常规检索,从根节点到叶子节点的搜索效率基本相当,不会出现大幅波动,

  • 而目基于索引的顺序扫描时,也可以利用双向指针快速左右移动,效率非常高。

  • 因此,B+树索引被广泛应用于数据库、文件系统等场景。
    在这里插入图片描述
    哈希索引:

  • 哈希索引就是采用一定的哈希算法,把键值换算成新的哈希值,检索时不需要类似B+树那样从根节点到叶子节点逐级查找,只需一次哈希算法即可立刻定位到相应的位置,速度非常快
    在这里插入图片描述

  • 如果是等值查询,那么哈希索引明显有绝对优势,因为只需要经过一次算法即可找到相应的键值;前提是键值都是唯一的。如果键值不是唯一的,就需要先找到该键所在位置,然后再根据链表往后扫描,直到找到相应的数据

  • 如果是范围查询检索,这时候哈希索引就毫无用武之地了,因为原先是有序的键值,经过哈希算法后,有可能变成不连续的了,就没办法再利用索引完成范围查询检索;

  • 哈希索引也不支持多列联合索引的最左匹配规则

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


http://www.ppmy.cn/news/924084.html

相关文章

保持寄存器和输入寄存器的区别,modbus寄存器占几个字节

Modbus协议的数据模型 数据模型是对从站设备可访问的数据进行抽象,Modbus协议的数据模型定义了四种可访问的数 其中,离散量输入和线圈数据类型是布尔量,因此只支持以位(bit)的方式进行访问,输入寄存器和保持寄存器数据类型是无符…

gma 2.0.0a3 (2023.07.17) 更新日志

安装 gma 2.0.0a3 pip install gma2.0.0a3新增 1、为矢量要素(Feature)添加 【Difference】(差集)方法   取第一个矢量要素与第二个矢量要素的几何差集。  2、为矢量要素(Feature)添加几种几何形状测试…

apple tv 开发_如何取消您的Apple TV +订阅

apple tv 开发 Whether you signed up for the Apple TV seven-day trial or were given a year-long membership for free after buying a new device, here’s how to cancel your subscription before you have to start paying for the streaming service. 无论您是注册App…

苹果cookie是打开还是关闭_关闭手机广告的几个操作

日常生活中,手机经常会有各种广告弹出,语音说过的话,搜索过什么内容,微信朋友圈发过什么文字,聊天时候发过什么,随之而来的就是相关的一些精准广告推送。有的是短信推送,有的是APP广告,有的是弹窗广告,让人烦躁,感觉自己被监视。很多人明明已经在通知管理中设置禁止发…

注册《苹果开发者》注意事项

重点注意事项 注册 Apple ID 填写姓氏,名字,出生日期一定要真实。已经申请过开发者账号的个人身份信息,不能再申请了,必须换人申请。已经申请过开发者账号的设备(iphone、ipad等),不能再申请了,必须换设备申…

iphone ios 如何检查提示用户关闭全部定位和程序定位服务

关键字:ALAssetsLibraryErrorDomain 3312 ALAssetsLibraryErrorDomain 3311 ALAssetsLibraryAccessUserDeniedError ALAssetsLibraryAccessGloballyDeniedError 当程序访问系统相册的图片,或使用定位服务的时候,如果用户关闭了全局定位服务…

苹果开发者账号怎么取消自动续费

Develeper app上没有找到 网页登录开发者账号也没有找到 打电话给苹果,说是在iPhone 设置 --> apple id --> 订阅。我点击进去显示“您没有任何订阅项目” 登录apple developer的网址,要苹果打电话给我。貌似下午4点以后,苹果就不会…

苹果怎么取消自动续费?分享关闭订阅的教程

苹果怎么取消自动续费?在使用手机的时候,我们会使用一些限时免费的软件,或者充值一些会员,很多时候都会默认到期以后自动续费,有些时候不关注就会出现莫名其妙的扣款,想要关闭这些自动续费的内容要怎么操作?其实很简单,接下来就和大家分享一下。 第一种:通过苹果手机的…