MySQL

洞悉MySQL底层架构与SQL调优本质
帅旋
关注
充电
IT宅站长,技术博主,共享单车手,全网id:arthinking。

从SQL执行原理看调优本质:union

发布于 2020-06-26 | 更新于 2024-02-24

通过使用union可以把两个查询结果合并起来,注意:

union all不会去除重复的行,union则会去除重复读的行。

1、union all

执行下面sql:

1
(select id from t30 order by id desc limit 10) union all (select c from t31 order by id desc limit 10)

该sql执行计划如下图:

image-20200621231412385

执行流程如下:

  1. 从t30表查询出结果,直接写出到net buffer,传回给客户端;
  2. 从331表查询出结果,直接写出到net buffer,传回给客户端。

image-20200621232801276

2、union

执行下面sql:

1
(select id from t30 order by id desc limit 10) union (select c from t31 order by id desc limit 10)

该sql执行计划如下图:

image-20200621233005902

执行流程如下:

  1. 从t30查询出记录,写入到临时表;
  2. 从t30查询出记录,写入临时表,在临时表中通过唯一索引去重;
  3. 把临时表的数据通过net buffer返回给客户端。

image-20200621233853780

References

本文作者: 帅旋

本文链接: https://www.itzhai.com/columns/mysql/sql/union.html

版权声明: 版权归作者所有,未经许可不得转载,侵权必究!联系作者请加公众号。

×
IT宅

关注公众号及时获取网站内容更新。