Mysql Union все слишком медленно - PullRequest
0 голосов
/ 02 декабря 2019

У меня есть запрос в MySQL из 4 таблиц. Когда я запускаю эти запросы по отдельности, они быстро запускаются в течение 1 секунды. Но когда я объединяю их (объединение всех), машина подвергается большой нагрузке и занимает не менее 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

Ответы [ 2 ]

0 голосов
/ 09 декабря 2019

Спасибо всем разработчикам, которые участвовали в моем вопросе.

Хотя я не нашел удовлетворительного разрешения mysql union для всех медленных запросов. Но я справился с этим до 80%, оптимизировав отдельные запросы mysql.

Также есть возможность увеличить лимит памяти и процессора.

0 голосов
/ 02 декабря 2019

Создав временную таблицу и добавив к ней индекс, вы решите свою проблему

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
...