mysql 联合索引 (最左前缀优化原则)

B + Tree 与 B - Tree 的区别
在这里插入图片描述
在这里插入图片描述

1、B - Tree 的叶子节点没有指针,不能更好的支撑范围查找
2、B + Tree 把根节点的非主键元素都放在叶子节点,只放主键元素,叶子节点放的是一些冗余索引。 B - tree 不会放冗余索引 。(上一篇文章里有提及)
一般建议使用联合索引
一张表不建议建立太多的索引,因为每建立一个索引都会建立一颗索引树,也会占存储空间。一般如果索引比较多的话,建议建立联合索引。

为什么innodb 表必须建主键,并且推荐使用整型得自增主键?(性能考虑)
1、innodb 整个表的存储结构他设计就是b+tree 来组织我们整张表的数据,如果建立了主键,默认会根据主键组织整张表的数据。如果没有建立主键,他会从这张表自己找一列(所有元素都不重样(唯一索引)),如果没有唯一列的元素,mysql 会自己维护隐藏的一列来组织这张表的所有数据。
2、整型的自增主键
在这里插入图片描述
就找30 来说,步骤是先进行数据的大小比对, 15<30<56,相比 一串字符串uuid (d6713010e14b4895baaf4cd7fa7f61ea 每一位还需要转化 Ascii码)比起来要效率要快点。

3、自增
要插入非自增的主键,会导致树分裂,需要做树的平衡。如果是自增,只会往后面一次添加

联合索引
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值