MySQL UNION ALL 太慢了

MySQL UNION ALL is too slow

我在 MySQL 中有一个来自 4 个表的查询。当我单独 运行 这些查询时,它们 运行 会在 1 秒内快速完成。

但是当我使用 UNION ALL 组合它们时,机器负载很重并且在 UNION ALL 中执行相同的查询至少需要 10 秒。我已经搜索了包括 YouTube 在内的整个互联网,但不幸的是我还没有找到任何解决方案。

请指教
谢谢。

code

SELECT *
FROM (
    SELECT id, sessionId FROM promotion
    UNION ALL
    SELECT id, sessionId FROM transport_details
    UNION ALL
    SELECT id, sessionId FROM fee_details
) a;

通过创建临时 table 并向其添加索引,将解决您的问题

id int(11),
sessionId varchar(255),
key id(id)
);

insert into tbl1 (id,sessionId)
select id, sessionId from promotion;

create temporary table tbl2(
id int(11),
sessionId varchar(255),
key id(id)
);
insert into tbl2 (id,sessionId)
select id, sessionId from transport_details;


create temporary table tbl3(
id int(11),
sessionId varchar(255),
key id(id)
);
insert into tbl3 (id,sessionId)
select id, sessionId from fee_details;

select * from tbl1 union all 
select * from tbl2 union all
select * from tbl3

在此感谢所有参与我提问的开发者。

虽然我没有找到任何令人满意的 MySQL UNION ALL 慢查询的解决方案。但是我通过优化 MySQL 个单独的查询将其管理了高达 80%。

还有增加内存和 CPU 限制的规定。