【沉浸式解决问题】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
*/
相关推荐
PH = 727 分钟前
MySQL的Sql优化经验总结
数据库·mysql
fouryears_2341737 分钟前
Mysql初阶操作:对命令的详细介绍
数据库·mysql
宿辞19237 分钟前
LINUX中MYSQL的使用
android·linux·mysql
盖世英雄酱5813637 分钟前
时间设置的是23点59分59秒,数据库却存的是第二天00:00:00
java·数据库·后端
安迪小宝1 小时前
16 celery集成其他工具
数据库·python·sqlite·celery
晨曦5432101 小时前
Django入门指南:Python全栈框架解析
数据库·sqlite
皮皮林5512 小时前
面试官:2000w 数据的大表如何优化?至少提供三种方案!
数据库
t198751282 小时前
使用zip命令在Ubuntu 20.04上进行文件夹压缩
linux·数据库·ubuntu
牵牛老人2 小时前
聊聊Qt 中的多面手之QVariant 变体类
开发语言·数据库·qt
谷新龙0013 小时前
神奇的bug之docker compose启动mysql失败
mysql·docker·bug