mysql索引详解

索引分类:

普通索引、聚集索引
组合索引、单个索引

普通索引与聚集索引的区别是聚集索引的索引顺序就是真正的物理存储顺序,所以在io读取的时候要比普通索引快
比如:使用普通索引查出了结果,但是结果要去第三块和第六块磁盘读取,而聚集索引的结果肯定是挨着的

组合索引是由多个列组成的索引,它符合最左原则
比如有a、b、c三个列,我们建立了一个abc的索引
进行搜索的时候可以写where a=1 and b=1 and c=1
这样索引的被使用到了,但如果是 a>1 and b=1 and c=1
这里只用到了a这个索引,bc都没有走索引,因为如果要使用组合索引,他的左边列一定要是固定的列
这样下一个索引列才是有序的,如果a in(1,2),这样b就是无序的了
在这里插入图片描述
如图所示,当a是1的时候b是有序的,为1、4,但当a为1和4的时候b就不再有序了。

什么时候索引失效?

1、当使用组合索引但又没有遵循最左原则时
2、当非数字类型的字段使用>、<时
3、当使用组合索引时在非最后一个列使用范围查询时索引只生效于前面的列
4、当mysql觉得全表扫描比使用索引效率更高时
5、当模糊搜索使用’%like’时

写sql时尽量让where和order by里的经常查的字段用上索引

索引覆盖:

当索引中存的数据能满足查询出来的数据时就不需要回表操作了,可以直接返回数据

回表:

普通索引中叶子结点存的是主键的值,
主键索引叶子结点存的是真正的数据(一般是数据地址)
根据普通索引查出数据(主键)后,要拿着主键去走一遍主键索引从而获取真正的数据。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值