首页 > 其他分享 >回表查询是什么?如何避免

回表查询是什么?如何避免

时间:2024-04-05 19:58:32浏览次数:27  
标签:username age 查询 回表 索引 避免 email 主键

回表查询就是使用索引后,还需要再次使用主键查找需要的数据列。

首先我们需要知道数据库中索引的底层数据结构是B+树,B+树的叶子结点储存了索引对应的值以及主键值,如果是复合索引(多列索引),B+树的叶子结点就储存了多列的值和主键值。

假设我们有一个名为user的MySQL表,它包含以下字段:
id:用户的唯一标识符(主键)
username:用户名  (添加了索引)
email:用户的电子邮件地址
age:用户的年龄

当我们执行SELECT email, age FROM user WHERE username = 'alice'的时候,数据库会使用username的索引查询到对应的数据行并获取到主键(叶子结点中的值),但是username的索引中并不包含email和age字段,因此数据库就需要再根据主键把这两个值查出来,影响性能。

为了避免回表查询,我们可以创建一个复合索引包括查询所需的所有数据列。

标签:username,age,查询,回表,索引,避免,email,主键
From: https://blog.csdn.net/weixin_71751028/article/details/137395066

相关文章

  • MySQL数据库分组查询group by
    1.DDL建表CREATETABLE`result`(`rid`int(11)NOTNULLAUTO_INCREMENTCOMMENT'成绩编号',`testName`varchar(255)DEFAULTNULLCOMMENT'测试名称',`score`double(4,2)DEFAULTNULLCOMMENT'成绩',`studentId`int(11)DEFAULTNUL......
  • Oracle分组查询中包含子查询列,发生ORA-00937:不是单分组函数的错误
    selectsum(raw_ore)raw_ore,(selectsum(raw_ore0)fromtrv_dailywherep_year=a.p_year)lift_orefromtrv_refineawherep_year=2024尽管语句selectsum(raw_ore0)fromtrv_dailywherep_year=a.p_year,只返回一个数值,系统提示“ORA-00937:不是单分组函数......
  • Node.js毕业设计基于WEB的学生成绩查询系统(Express+附源码)
    本系统(程序+源码)带文档lw万字以上  文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:随着信息技术的飞速发展,互联网已经深入到我们生活的每一个角落。教育领域也不例外,越来越多的学校开始利用网络技术进行教学管理。其中,学生成绩查询系统是一......
  • goDbClient开源代码--通用查询
    开源地址: https://gitee.com/ichub/godbclient.git通用查询funcTest0010_SelectDptSub(t*testing.T){vardbRequest=NewPageDbRequest(2)dbRequest.TableName="department"dbRequest.Eq("id",1)dbRequest.NewSubTable()dbR......
  • 多表的联合查询以及分组排序与HAVING筛选
    DDL【创建数据库】——学生表——成绩表CREATETABLE`student`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'学号',`createDate`datetimeDEFAULTNULL,`userName`varchar(20)DEFAULTNULL,`pwd`varchar(36)DEFAULTNULL,`phone`varchar(11)DEFAU......
  • SQLite下一代查询规划器(十)
     返回:SQLite—系列文章目录   上一篇:SQLite查询优化器概述(九)下一篇:SQLite的架构(十一)1. 引言“查询规划器”的任务是弄清楚找出完成SQL语句的最佳算法或“查询计划”。从SQLite 版本3.8.0 (2013-08-26)开始,查询规划器组件已重写,使其运行得更快并生成更好的......
  • NSLOOKUP如何查询网站的cname
    nslookup的语法为:nslookup–qt=类型目标域名(注意qt必须小写)使用nslookup查询网站的cname,如查询www.taobao.com的cname:nslookup-qt=cnamewww.taobao.com 如需查询其他类型的信息只需在语句里替换类型即可。类型主要有:A地址记录(Ipv4)AAAA地址记录(Ipv6)CNAME......
  • node.js启动文件服务器 并自动查询index.html等默认文件
    方法1'usestrict';consthttp=require('http'),fs=require('fs'),url=require('url'),path=require('path');//从命令行参数获取root目录,默认是当前目录varroot=path.resolve(process.argv[2]||'.&......
  • MySQL分组查询实例
    数据表创建DDL——学生表——成绩表CREATETABLE`student`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'学号',`createDate`datetimeDEFAULTNULL,`userName`varchar(20)DEFAULTNULL,`pwd`varchar(36)DEFAULTNULL,`phone`varchar(11)DEFAULTN......
  • 高效查询
    高效查询本文内容正确使用索引只投影需要的属性限制结果集大小高效分页在加载相关实体时避免笛卡尔爆炸尽可能预先加载相关实体缓冲和流式处理跟踪、非跟踪和标识解析使用SQL查询异步编程其他资源显示较少选项高效查询是一个庞大的主题,涵盖的主题就像索引、相关实......