关于mysql数据库回表的粗浅理解

本文探讨了MySQL数据库中主键索引与普通索引的区别,并解释了为何在查询时会出现回表现象。当使用主键索引查询时,能直接获取完整数据行;而使用普通索引如name时,需要通过回表找到主键,再根据主键查询获取age等其他字段,增加了查询成本。回表发生的本质是因为普通索引不包含所有列信息,必须借助主键索引完成查询。
摘要由CSDN通过智能技术生成

1关于mysql数据库回表
说一下现象
在这里插入图片描述
比如有有一张test表,设置id为主键,name为索引
当使用
select id,name,age from test where id=1
查询数据的时候,使用的是主键索引,没有出现回表现象
当使用
select id,name,age from test where name=‘hh’
查询数据的时候,使用的是普通索引,会出现回表现象(使用name做普通索引,查询age值,一次性获取不到age值,过程是通过name索引,查询到主键索引,然后再利用主键索引查询一遍,这就是回表现象)

为什么会出现回表?
这是因为两种索引的不同,
网上盗图(旨在说明)
以id为主键索引
在这里插入图片描述
上图可以理解为使用主键索引的数据(Row包含整行数据,所以select id,name,age from test where id=1的时候可以一次获取到所有数据)

以name为普通索引
在这里插入图片描述
这是普通索引的数据(key+pk cols此处可以理解为我们的name+id,所以select id,name,age from test where name='hh’的时候获取不到age的值,而是通过name='hh’获取到id,在通过id获取所有值,多查询了一遍,这就是回表)

可以粗浅的理解为创建了索引之后,关联的数据内容不同,所以查询的时候有差异,回去多查了一遍

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值