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 的两个子查询是串行还是并行的主要内容,如果未能解决你的问题,请参考以下文章
MySQL笔记--- 连接查询;子查询;union;limit;