通过使用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执行计划如下图:
执行流程如下:
- 从t30表查询出结果,直接写出到net buffer,传回给客户端;
- 从331表查询出结果,直接写出到net buffer,传回给客户端。
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执行计划如下图:
执行流程如下:
- 从t30查询出记录,写入到临时表;
- 从t30查询出记录,写入临时表,在临时表中通过唯一索引去重;
- 把临时表的数据通过net buffer返回给客户端。