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、或者把分表数量减小

发布了159 篇原创文章 · 获赞 350 · 访问量 55万+

猜你喜欢

转载自blog.csdn.net/wenniuwuren/article/details/89329909