当前位置:网站首页>MYSQLg高级------回表
MYSQLg高级------回表
2022-08-11 03:26:00 【你若不离不弃,我必生死相依】
查看回表之前大家需要 先对 聚簇索引和非聚簇索引 innoDB和MyISAM有一定的了解; 有兴趣看自行查看 :地址
一、什么是回表?
这先要从InnoDB的索引实现说起,InnoDB有两大类索引:
聚集索引(clustered index)
普通索引(secondary index)
主键索引包含该行所有数据,普通索引包含的只有该索引和id
其实非聚集索引 的过程就是所谓的回表;
通俗的来讲就是:如果select 所需要获得列中有非索引列,一次索引查询不能获取所有的信息,需要到表中找到相应列的ID; 在根据ID去去查询
对应表中具体的列的数据,这个过程就是回表;而根据一次索引查询就能获取所有列的信息,就不需要回表;(也就是聚集索引)
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`deptId` int(11) DEFAULT NULL,
PRIMARY KEY (`id`) ,
KEY `fk_dept_id`(`deptId`)
)ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8;
INSERT INTO `atguigudb`.`user` (`id`, `name`, `deptId`) VALUES (1, '小闫', 10);
INSERT INTO `atguigudb`.`user` (`id`, `name`, `deptId`) VALUES (2, '老闫', 10);
INSERT INTO `atguigudb`.`user` (`id`, `name`, `deptId`) VALUES (3, '小闫01', 10);
INSERT INTO `atguigudb`.`user` (`id`, `name`, `deptId`) VALUES (4, '小闫02', 10);
INSERT INTO `atguigudb`.`user` (`id`, `name`, `deptId`) VALUES (5, '小闫03', 10);
执行下面的就不需要回表,因为根据主键查询方式,只需要查询ID这颗B+树即可;主键是唯一的根据这个唯一索引,MYSQL就能确定搜索到这条记录;
id为主键索引,主键索引就是聚集索引
聚集索引的叶子节点包含整给行的记录,一次查询就能获取所有的信息,故不需要回表
# 直接访问id 找到对应的值
select id,name,deptId FROM USER WHERE name='3';
下面这个sql就是需要回表的:因为name 是普通的索引,他的查询的方式,需要先查询name的索引树,然后得到id的主键为3,再到id索引树进行一次查询。即先定位主键值,再定位记录,再这个过程中虽然使用了索引,但实际上底层进行了两次索引的查询,这给过程就是回表;
#非聚簇索引 根据值找到id 根据id找到对应的值
select id,name,deptId FROM USER WHERE name="小闫01";
select id,name,deptId FROM USER WHERE name='3';
详细的 请查看 博客
希望可以帮助大家更好的理解吧;不足之处,请大家批评指正;
边栏推荐
猜你喜欢
Add user error useradd: cannot open /etc/passwd
一次简单的 JVM 调优,学会拿去写到简历里
Idea (优选)cherry-pick操作
Homework 8.10 TFTP protocol download function
Briefly, talk about the use of @Transactional in the project
树莓派入门(5)系统备份
Google search skills - programmer is recommended
Qnet弱网测试工具操作指南
【愚公系列】2022年08月 Go教学课程 035-接口和继承和转换与空接口
阿里低代码框架 lowcode-engine 之自定义物料篇
随机推荐
IDE编译报错:Dangling metacharacter
[Pdf generated automatically bookmarks]
Ninjutsu_v3_08_2020 - safety penetrating system installation
【Pdf自动生成书签】
EasyCVR接入海康大华设备选择其它集群服务器时,通道ServerID错误该如何解决?
Idea (优选)cherry-pick操作
否定语义转化层
聊聊对RPC的理解
Design and Realization of Employment Management System in Colleges and Universities
AI+医疗:使用神经网络进行医学影像识别分析
A large horse carries 2 stone of grain, a middle horse carries 1 stone of grain, and two ponies carry one stone of grain. It takes 100 horses to carry 100 stone of grain. How to distribute it?
En-us is an invalid culture error solution when Docker links sqlserver
js中的this问题
CSDN 博客更换皮肤
Ten Advanced Concepts of SQL Development
LeetCode Hot Questions (12. The Best Time to Buy and Sell Stocks)
按摩椅控制板的开发让按摩椅变得简约智能
求和、计数的窗口函数应用
How can users overcome emotional issues in programmatic trading?
How does MSP430 download programs to the board?(IAR MSPFET CCS)