Mysql Union太慢了

问题描述 投票:0回答:1

我在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
mysql performance union union-all
1个回答
0
投票

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

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

0
投票

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

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
© www.soinside.com 2019 - 2024. All rights reserved.