MYSQL 添加索引最左原理

mysql如果发现查询缓慢,添加索引是最直接有效的办法了,下面就来介绍索引的数据结构和各种坑!! 别忘了打开mysql 的慢查询

索引的分类

  • 主键索引:一张表只能有一个主键索引,不允许重复、不允许为 NULL;
  • 唯一索引:数据列不允许重复,允许为 NULL 值,一张表可有多个唯一索引,但是一个唯一索引只能包含一列,比如身份证号码、卡号等都可以作为唯一索引;
  • 普通索引:一张表可以创建多个普通索引,一个普通索引可以包含多个字段,允许数据重复,允许 NULL 值插入;
  • 全文索引:让搜索关键词更高效的一种索引。

上面是安装逻辑分类的索引,还可以按照物理分为聚合和非聚合索引这个就不做过多解释了

普通索引

            其他的几种索引可以根据情况添加,我们重点来看一下普通索引。因为现在都大多数是 InnoDB引擎,所以下面都以 InnoDB为例。因为索引的底层是一颗B+树,所有普通索引的底层也是B+树,正常的索引都会到树的最底层关联到对应主键,对于InnoDB来说 主键和行记录是存在一起的(所以叫聚合索引),这里要注意,若表存在主键,则主键索引就是聚集索引。 若不存在主键,则会把第一个非空的唯一索引作为聚集索引。 否则,就会隐式的定义一个 rowid 作为聚集索引。

         

通过上图我们可以看到,如果我们建立了(name,age)两个联合索引,我们的最终目的是要找到主键来找到对应行数,但是通过B+树查找的话只能通过name才能找到对应的索引列,所有为啥索引有最左原则就一目了然了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值