小编典典

Mysql Union VS VS单独查询一对一

sql

如果我有n个查询q1,q2,q3 … qn,并且每个查询都以t1,t2,t3 … tn作为运行时间。

我也有另一个查询q1 UNION ALL q2 UNION ALL q3 .... UNION ALL qn和运行时间是tu

比较tu和t1 + t2 + t3 + … + tn,理论上哪个会更快?我知道做实验是找出答案的最好方法,但是我需要听取专家关于理论的声音。谢谢


阅读 162

收藏
2021-04-15

共1个答案

小编典典

UNION操作需要重复的元组(行)被移除结果集返回任何行之前。这实际上是SORT
UNIQUE操作。对于较小的结果集而言,这是相对便宜的,但是对于大量结果集而言,这可能会占用大量服务器资源(即花费很长时间)。

从理论上讲,将查询与UNION ALL运算符而不是UNION运算符组合起来将是最快的,因为与单独运行查询相比,它将消除( n
-1)次往返数据库。但是对于较大的 n 值,您将遇到SQL文本大小(最大数据包大小)的实际限制。

给定UNION运算符和独立查询之间的选择,对于较大的结果集,独立查询在服务器端的资源占用将减少。

简而言之,这实际上是每个查询的繁重工作与SORT UNIQUE操作的繁重工作之间的权衡。

2021-04-15