繁体   English   中英

如何提高UNION ALL的MYSQL性能?

[英]How to improve MYSQL performance on UNION ALL?

我正在优化一个涉及UNION ALL两个查询的查询。 两种查询都经过优化,并且分别在不到一秒的时间内运行。 但是,当我执行两者的并集时,计算所有内容大约需要30秒。

我不打扰你使用特定的查询,因为它们在获得时进行了优化,所以让我们称之为Optimized_Query_1Optimized_Query_2

Optimized_Query_1的行数大约为100K

Optimized_Query_2的行数大约为200K

SELECT * FROM (
   Optimized_Query_1
UNION ALL
   Optimized_Query_2
) U 
ORDER BY START_TIME ASC

我确实要求结果按顺序排列,但我发现无论有没有ORDER BY,查询都需要花费尽可能多的时间,所以不应该有任何区别。

显然UNION ALL在内存中创建了一个临时表,然后从那里得到最终结果,有什么方法可以解决这个问题吗?

谢谢

您无法优化UNION ALL 它只是将两个结果集叠加在一起。 相比于UNION当需要额外的步骤来删除重复, UNION ALL是两个结果集的直堆叠。 ORDER BY可能需要额外的时间。

您可以尝试从此查询中创建VIEW

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM