mysql索引篇 - B+树

本文探讨了如何设计适合MySQL的数据结构,强调了B+Tree的优势,解释了InnoDB作为默认搜索引擎的原因,以及为何推荐设置整型自增主键,以提高查询效率并减少数据库维护负担。
摘要由CSDN通过智能技术生成

要设计一个适合 MySQL 索引的数据结构,至少满足以下要求:

  • 尽可能的少进行I/O操作
  • 能够高效的进行单个数据查询,也能高效的进行范围查询

二叉树

如果数据都是从小到大插入,二叉树就会退化成链表

红黑树

数据量过大时,树的高度会越来越高

b Tree

不适合做范围查询

b+ Tree

  1. 查询某个数据效率高且稳定
  2. 支持范围查找
  3. 千万级别数据量树高能控制在3-4层

为什么mysql默认使用innodb作为搜索引擎?

  • MyISAM 引擎是把索引和数据分开存放,通过索引查到数据之后还要进行一次回表操作
  • innodb则是把索引和数据都存放在了一起,查找到了索引之后可以直接拿到数据

为什么mysql推荐一定要设定索引,最好使用整型且设定自增主键

  • 一定要设定索引:如果不设定索引,mysql会找表中的某一列中不重复的值作为主键索引,如果没有找到就会自动生成一个隐藏列作为索引,加大了mysql自身的工作量
  • 整型主键:整型的比较比字符串的比较效率更高,如果使用uuid作为主键,还要将uuid转化成ACSI码逐个去比对,效率大大折扣
  • 自增索引:如果是自增索引,数据再插入的时候会往后面排,mysql维护B+树的时候会尽可能的减少自身的平衡,且树的分裂次数会比较少,如果使用了非自增主键,例如uuid,那它的插入顺序可能是随机的,可能会往中间插入,B+树会对插入的数据进行分裂以及自平衡的操作,这比自增的索引工作量更大,从而降低了性能
  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值