MySQL索引:聚集索引、非聚集索引、联合索引、回表、索引覆盖
一、聚集索引和非聚集索引
在MySql里,innodb通过主键构建一个B+树,该B+树用来存放数据(非叶子结点存放主键,叶子结点存放数据)。
如果不存在主键:MySql使用唯一索引,如果不存在唯一索引,那么就会创建一个隐式的RowId构建一个聚簇索引。
二、其它索引
除去主键索引,还有其它的索引,每个索引都会建立一个B+树,这些B+树是非聚集索引,非聚集索引,非叶子结点存放索引,叶子结点存放表ID。
三、回表
在通过索引查询的过程中,先通过索引查询到主键,然后再通过主键去主键索引构建的B+树获取数据,这就是一次回表操作,也就是一次索引B+树,一次主键索引B+树。
四、联合索引
联合索引一起构成一个B+树,也是非聚簇索引结构,大致是这样的:index(a,b)
从图中可以看出:结构是按照a排序的,再确定了a的值之后,再按照b排序。
如果不确定a的值,按照b的值查询,那么b的值会没有规律的出现在B+树的任意位置,这就导致组合索引失效。
五、索引覆盖
如果在由索引构建的B+树里有查询需要的数据,那么就需要回表操作,这就是索引覆盖。
上一篇:无
下一篇:binlog存放的内容是什么
相关文章
-
索引失效的问题如何排查?
当然是使用explain关键字来分析SQL了。 当用explain关键字来分析SQL的时候,主要查看key、type、extra这三个关键字。 如果key是NULL、type是ALL,extra是use where,那么就是没有走索引。
NEW个对象 2025-01-09
-
SQL语句
表B:id,name,code,detail四个字段均有值;表A id,name,code,detail其中id,name有值并且与表B相对应,code,detail值为null。现在将B表中的code和detail值更新到A表中。
NEW个对象 2024-12-25
-
索引下推
索引下推的下推其实就是指将部分上层(服务层)负责的事情,交给了下层(引擎层)去处理。
NEW个对象 2024-12-17