MySql的索引

本文详细解析了数据库索引的类型,包括聚集索引、非聚集索引、唯一索引等,阐述了索引的工作原理,如回表、覆盖原则,并讨论了索引失效的情况,以及事务中可能出现的幻读现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、索引分为聚集索引和非聚集索引(主键索引和辅助索引)
主键索引:根节点和父节点存储的是指针和索引的值,子页节点存储的是索引的值和对应一列的数据
辅助索引:根节点和父节点存储的是指针和索引的值,子叶节点存储的是索引的值和对应列的主键索引的值

2、辅助索引分为:
唯一索引:索引列的值必须唯一,允许有一个空值。
单列索引: 即一个索引只包含一个列。
复合索引:即一个索引包含多个列。

3、什么是回表:索引树中不包含需要的值,就需要先在普通索引树中查到对应主键的值,再去主键索引种查需要值,这个过程叫回表

4、覆盖原则:查询采用的索引树包含需要的所有值,不需要回到主键索引去查,简单来说就是不需要回表

5、索引失效:
1、用name和1比较,name上有索引,name是字符串类型,字符串和数字比较的时候,会将字符串强制转换为数字,然后进行比较,
所以第二个查询变成了全表扫描,只能取出每条数据,将name转换为数字和1进行比较。
2、使用了函数之后,name所在的索引树是无法快速定位需要查找的数据所在的页的,只能将所有页的记录加载到内存中,
然后对每条数据使用函数进行计算之后再进行条件判断,此时索引无效了,变成了全表数据扫描。

6、幻读指的是一个事务在前后两次查询同一个范围的时候,后一次查询看到了前一次查询没有看到的行。

7、最左原则:一张表有ABC3个字段,是复合索引,查询的时候,查ABC、AB索引生效,查BC、AC索引不生效,因为索引是以最左的A字段为目标查询,查到A在查B,然后在查C

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值