MYSQL 回表查询

回表查询是数据库查询中的一种现象,它发生在索引包含的数据不足以满足查询需求时

在数据库中,尤其是使用InnoDB存储引擎的MySQL数据库,索引分为聚集索引(clustered index)和普通索引(secondary index)。聚集索引的叶子节点存储的是完整的数据行,而普通索引的叶子节点存储的是该行数据的主键值。当进行查询时,如果使用了普通索引,且查询所需的字段不全都包含在索引中,数据库就需要通过索引找到对应的主键值,然后再通过主键值到聚集索引中查找完整的数据行,这个过程就是所谓的“回表查询”。具体来说:

  1. 索引扫描:数据库首先通过普通索引快速定位到符合条件的记录的主键值。
  2. 回表操作:然后,数据库使用这些主键值回到聚集索引中查找对应的完整数据行。
  3. 性能影响:由于需要两次访问索引(一次普通索引,一次聚集索引),这会增加I/O操作和CPU负载,从而降低查询性能。

总的来说,了解回表查询的概念对于优化数据库性能是非常重要的,开发者在设计索引和编写查询语句时应该尽量避免不必要的回表操作,以提高查询效率。

举例

现有User表  字段为 ID(主键),name,age

以name这一列创建索引(以name列数据,经过b+tree算法形成b+tree,存储到硬盘)

什么是B+树?-CSDN博客

此时name列的B+树存储的数据为当前列数据(name这一列)和主键列数据(id)

当执行select * form user while name = ? 时 命中name列的B+树

但我们要查询全部数据,此时这棵树存储的数据不是完整的,所以就要通过回表查询获取完整的数据

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
7384公交查询系统2.0在1.0版本重构了数据库,全面修改了代码,可以说的上是第二代所以是2.0版本。该版本使用新的数据库和自己写的换乘算法,新算法的核心文件只有原来的一半大小。实现了网址参数的数字化。大家可以把完整网址复制到QQ里发去(原来的有中文不行的)。缩短网址的同时易收录。更多惊喜请自己慢慢体验哇! 1.公交换乘查询,支持直达及二次以内公交换乘查询。 2.公交线路查询,支持模糊查询,显示最新查询记录。 3.公交站点查询,支持模糊查询,显示语音相近的站点。 相关站点,包含两个以上音一样的站点. 4.搜索查询ajax即时提示。关键词加红,视觉效果很好。 搜索提示支持拼音查询"火车站"="huochezhan", 搜索提示支持简拼查询"火车站"="hcz", 搜索提示支持模糊查询"货车"="火车", 搜索支持拼音模糊查询"ch"="c"...., 5.首页公交换乘查询最新查询记录 6.首页公交线路查询最新查询记录 7.首页公交站点查询最新查询记录 8.无后台,但有数据库更新维护工具。 bus_上传 目录使用说明: 1.该目录目前只支持根目录使用 2.更改只需修改bus_上传/inc/conn.asp以下两行 db="/date/huaian.mdb"  city = "淮安" 3.注意db="/date/huaian.mdb"数据库名字和date目录下的数据库名同 4.城市更换请删除cache目录下的3个文件 data_本地运行 目录使用说明: 目录与文件说明: 0/ 存放模板数据库文件(勿删,也不用管) 1/ 将 bus_上传/date 最新的数据库复制到这里。 2/ index_1to2.asp文件运行后生成的数据存放目录(不用管) 3/ index_2to3.asp文件运行后生成的数据存放目录 数据库更新过程: 1. bus_上传/date 最新的数据库复制到目录:data_本地运行/1 2. 维护、修改好数据库xian表的线路,经过站点以及说明。 3. 运行index_1to2.asp 结束可能会花费很长时间(看线路和站点多少) 4. 运行index_2to3.asp 结束可能会花费很长时间(看线路和站点多少) 5. 将data_本地运行/3下的数据库复制回bus_上传/date目录(记得数据库名字) 特别说明: 1.data_本地运行 下使用的数据库都是mdb后缀,如果不是请改。 2.公交的线路和站点不要出现“-”或者空格,否则可能会出错哦。 3.记得index_1to2.asp  index_2to3.asp都要运行到结束(文字出现)为止。 4.index_1to2.asp会把1目录下的所有数据库全部重新生成到2目录,重复操作可能会影响你的效率 5.index_2to3.asp会把2目录下的所有数据库全部重新生成到3目录,重复操作可能会影响你的效率 6.如果提示“已经存在没有生成---如果要重新生成请先删...”按提示操作 7.该目录运行可能占用大量内存,请本地运行哦!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值