注册
回表对于数据查询速度的影响,以及一般应对方法
专栏/培训园地/ 文章详情 /

回表对于数据查询速度的影响,以及一般应对方法

画风 2024/05/24 630 0 0
摘要

回表其实就是查询的一个步骤,当然是在某些场景下才有。一般数据库建表时,会创建索引,以普通索引为例,创建的索引结构中包含的是聚簇索引的值(一般就是主键id),在根据此普通索引进行查询时,首先会查到普通索引的位置,比如下标是110,那么会从110处取出聚簇值,也就是id值,再拿id值取表中取数据,这个过程就叫做回表。回表对于数据查询有时会导致性能变差。
以如下数据为例:
CREATE TABLE DMTEST(
ID INT,
RECORD1 VARCHAR(200),
RECORD2 VARCHAR(200));

image.png

image.png

对于此表建如下索引:
create index DMTEST.id_ind on dmtest(id);

对于如下查询:
select id,record1 from dmtest where id between 1 and 100000;
会产生回表:
image.png

查询时间如下:
image.png

为了消除回表,我们可以将查询列加入至索引,如下:
create index DMTEST.id_record on dmtest(id,record1);

然后执行计划变为:
image.png
数据查询时间约为:
image.png

所以在日常优化中需要关注回表对于性能的影响,建立合适的索引。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服