MySQL UNION 的两个子查询是串行还是并行

Posted wenniuwuren

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL UNION 的两个子查询是串行还是并行相关的知识,希望对你有一定的参考价值。

问题:select_1 UNION select_2,其中 UNION 左右的两个子查询是否并行。

场景:由于我们的分库分表中间件对库内表的子查询会进行 union,而我们是 2048 分表,也就是最大可能 union 2048次,如果是串行执行,结果是我们不能接受的

测试结果
mysql> select version();
+---------------+
| version()     |
+---------------+
| 内部基于mysql  |
+---------------+
1 row in set (0.00 sec)

mysql> select sleep(1) union select sleep(3);
+----------+
| sleep(2) |
+----------+
|        0 |
+----------+
1 row in set (3.01 sec)    -- 串行

 

解决:

1、维护一个连接池,发两个连接到服务端,client merge。 这样太复杂了,业务系统有共性需求都是重复造轮子

2、或者把分表数量减小

以上是关于MySQL UNION 的两个子查询是串行还是并行的主要内容,如果未能解决你的问题,请参考以下文章

union的两个子查询是否并行

MySQL笔记--- 连接查询;子查询;union;limit;

mysql学习之路_联合查询与子查询

xadc输出是串行还是并行

MySQL基础语法之子链接查询和特殊查询(union 和 limit)

mysql性能分析工具