【沉浸式解决问题】Mysql中union连接的子查询是否并行执行

目录

一、问题描述

在MySQL中使用union连接子查询时突然想确认下是串行还是并行执行,做个实验测试下


二、场景还原

1. 测试sql

sql 复制代码
SELECT SLEEP(1)
UNION ALL
SELECT SLEEP(1)
UNION ALL
SELECT SLEEP(1)
UNION ALL
SELECT SLEEP(1)
UNION ALL
SELECT SLEEP(1)

运行结果

运行时间为5秒可以确定是串行了

union也是同样的


三、原因分析

MySQL 早期的设计是一个连接分配一个进程,这种单线程模型在处理 UNION 查询时,自然就会按串行方式执行子查询,一个子查询完成后,再执行下一个子查询


四、解决方案

在实际中,我们还是希望能快一点,毕竟有时候需要连接的子查询过多的话,时间无法接受,那只能在代码中通过多线程并发进行查询,然后在内存中进行连接。


喜欢的点个关注吧><!祝你永无bug!

txt 复制代码
/*
                   _ooOoo_
                  o8888888o
                  88" . "88
                  (| -_- |)
                  O\  =  /O
               ____/`---'\____
             .'  \\|     |//  `.
            /  \\|||  :  |||//  \
           /  _||||| -:- |||||-  \
           |   | \\\  -  /// |   |
           | \_|  ''\---/''  |   |
           \  .-\__  `-`  ___/-. /
         ___`. .'  /--.--\  `. . __
      ."" '<  `.___\_<|>_/___.'  >'"".
     | | :  `- \`.;`\ _ /`;.`/ - ` : | |
     \  \ `-.   \_ __\ /__ _/   .-` /  /
======`-.____`-.___\_____/___.-`____.-'======
                   `=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            佛祖保佑       永无BUG
*/
相关推荐
csdn_aspnet17 小时前
CentOS 7 上安装 MySQL 8.0
linux·mysql·centos
java1234_小锋17 小时前
REDIS集群会有写操作丢失吗?为什么
数据库·redis·缓存
兰若姐姐17 小时前
如何进行MSSQL提权?sp_oacreate、sp_oamethod和沙盒提权以及xp_regwrighte提权
数据库·sqlserver
一抓掉一大把17 小时前
秒杀-订单创建消费者CreateOrderConsumer
网络·数据库
一只小bit19 小时前
MySQL事务:如何保证ACID?MVCC到底如何工作?
数据库·mysql·oracle
小猪咪piggy19 小时前
【项目】小型支付商城 MVC/DDD
java·jvm·数据库
向阳而生,一路生花19 小时前
redis离线安装
java·数据库·redis
·云扬·19 小时前
使用pt-archiver实现MySQL数据归档与清理的完整实践
数据库·mysql
黄焖鸡能干四碗20 小时前
信息安全管理制度(Word)
大数据·数据库·人工智能·智慧城市·规格说明书
zhangyifang_00920 小时前
PostgreSQL一些概念特性
数据库·postgresql