Создав временную таблицу и добавив к ней индекс, вы решите свою проблему
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