【沉浸式解决问题】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
*/
相关推荐
TDengine (老段)1 天前
MySQL/PG/TDengine 时间范围 SQL 表达式
sql·mysql·tdengine
傻啦嘿哟1 天前
物流爬虫实战:某丰快递信息实时追踪技术全解析
java·开发语言·数据库
大白的编程日记.1 天前
【计算网络学习笔记】MySql的多版本控制MVCC和Read View
网络·笔记·学习·mysql
optimistic_chen1 天前
【Redis 系列】Redis详解
linux·数据库·redis·缓存·xsheel
熊文豪1 天前
17年稳定运行:金仓数据库如何成为电力行业的“数字基石“
数据库·kingbasees·金仓数据库·电科金仓·kes
r***11331 天前
Redis--模糊查询--方法实例
数据库·redis·缓存
q***71011 天前
SQL注入(SQL Injection)攻击原理与防御措施
数据库·sql·oracle
f***R81 天前
解决bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException
java·数据库·sql
T***19201 天前
实操解决Navicat连接postgresql时出现‘datlastsysoid does not exist‘报错的问题
数据库·postgresql
·云扬·1 天前
Redis性能测试实战:掌握redis-benchmark工具用法与集群压测技巧
数据库·redis·缓存