Mysql 联合时间 V.S.一对一单独查询[关闭]

2024-04-01

如果我有 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,理论上哪个会更快?我知道做实验是找出答案的最好方法,但我需要听到专家对理论的声音。谢谢


The UNION运算符要求在返回任何行之前从结果集中删除重复的元组(行)。这实际上是一个 SORT UNIQUE 操作。对于小型结果集来说,这相对便宜,但对于大量结果集,它可能会占用服务器时间的资源(即需要很长时间)。

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

考虑到之间的选择UNION运算符和单独的查询,对于大型结果集,单独的查询在服务器端的资源密集程度将较低。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysql 联合时间 V.S.一对一单独查询[关闭] 的相关文章

随机推荐