我在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
通过创建临时表并向其添加索引,将解决您的问题
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
通过创建临时表并向其中添加索引,将解决您的问题
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