当前位置: 首页 > news >正文

Mysql中索引B+树、最左前缀匹配

这里需要对索引的相关结构有一个基础的认识,比如线性索引,树形索引(二叉树,平衡二叉树,红黑树等),这个up主我觉得讲的还是比较清楚的,可以看下。 

终于把B树搞明白了(一)_B树的引入,为什么会有B树_哔哩哔哩_bilibili

主要是三个方面:

  • IO次数减少;
  • 查询性能的高效(等值查询和范围查询的相对高效);
  • 和其他几种索引对应的缺点

1,B+树的非叶子节点没有保存数据,仅仅保存了对应的索引值和指向子节点的指针,这使得一个datapage能够保存更多的索引键值,大幅度减少了了IO次数的操作;

2,B+树是一种自平衡树,所有的数据都在叶子节点上存储,B+树的平衡性保证了查询路径长度一致,在等值查询上,实现查询的O(logn)时间复杂度。B+树又是一个多叉树,树的高度不会随着数据的大量增长快速增加,大量数据的情况下,也是具有较高的查询性能;在范围查询上,B+树的叶子节点的数据可以使用双向链表对其进行遍历,避开了父节点回溯,同样实现了较高的查询效率,除此之外,叶子节点是有序存储,天然适配排序操作;

3,对于其他的索引,比如,哈希无法支持有效的范围查询;二叉树的深度过大,对大数据量不友好;B树的每一个节点都存储数据,导致IO开销较大;跳表,内存中效率接近B+树,但磁盘存储时层数较高,且节点分散导致无法利用磁盘预读。

什么是最左前缀匹配

1,最左索引匹配指的在使用联合索引时,查询条件需要联合索引从最左列开始依次匹配,从第一列开始,然后是第二列,第三列,以此类推,只有在仅最左列,连续前缀,或者完全顺序覆盖的情况下有效。

2,最左前缀匹配原则是因为Mysql索引基于B+树结构,联合索引的存储顺序严格遵循定义的顺序,B+树查找时,需要从最左侧逐层定位,如果跳过开始列(a),则会导致索引失效全表扫描,举个例子,查找国内的某个人,需要确定省份---->城市----->姓名,这样子可以实现快速定位,如果跳过省份,则需要全表扫描才能找到。

3,在这个过程中需要注意范围查询(> 、<、%abc )会打断索引匹配,包含等值查询(>=、<=)或者做前缀匹配(abc%)则不会.

3层B+树大约是多少条数据

对于B+树的存储结构做出下面的假设:

 假设

datapage: 16kB

data + key : 1KB

单页数据数:16KB/1KB = 16

key : 8 B

next : 6 B

单页索引指针:16*1024/14~~1170

总的数据总数: 1170 * 1170 * 16 ~~ 21000000+

相关文章:

  • 5G RedCap是什么-与标准5G的区别及支持路由器推荐
  • .NET 7 AOT 使用及 .NET 与 Go 语言互操作详解
  • 在 RedHat 系统(RHEL 7/8/9)中安装 ​​pythonnet​​ 和 ​​.NET Core​​ 的完整指南
  • 如何轻松将 iPhone 备份到外部硬盘
  • OpenCv高阶(十九)——dlib关键点定位
  • 【.net core】Rotativa 如何在linux上实现
  • Vue Hook Store 设计模式最佳实践指南
  • laya3的2d相机与2d区域
  • 嵌入式软件--stm32 DAY 8.5 基础复习总结
  • 高光谱成像相机:基于高光谱成像技术的玉米种子纯度检测研究
  • 抖音、快手无水印福音开源下载器之蓝猫 BlueCatKoKo
  • 安科瑞Acrelcloud-6200系统:智慧路灯安全用电监控平台架构解析
  • Day06
  • Vue3实现折叠面板
  • 如何更好的理解云计算和云原生?
  • 自动驾驶与智能交通:构建未来出行的智能引擎
  • 【Linux】网络--传输层--深入理解TCP协议
  • 微服务各个部分的作用
  • 自动驾驶中的路径跟踪:Python实现与技术解析
  • Free2AI:企业智能化转型的加速器
  • 做怎么样的网站好/seo软件哪个好
  • wordpress 搜索增强/seo的中文意思是什么
  • 做政协网站的目的是什么/免费职业技能培训网
  • 阿里云网站模板送域名/网站关键词排名怎么优化
  • 做网站建设的公司有哪些内容/长沙网动网络科技有限公司
  • 小说网站怎么做流量/百度热搜榜排名今日