Есть запрос на MySQL БД, который отрабатывает 2.5 часа, хотя сама итоговая таблица pc в left join отрабатывает за несколько секунд:
select m.*, pc.*
from main_table m
left join ...
left join ...
left join (select pc.client_id,
pc.strategy_1 as pre_strategy_1,
pc.strategy_2 as pre_strategy_2,
pc.strategy_2_system as pre_strategy_2_system,
pc.strategy_3 as pre_strategy_3,
pc.strategy_4 as pre_strategy_4,
pc.strategy_5 as pre_strategy_5,
pc.strategy_6 as pre_strategy_6,
pc.strategy_7 as pre_strategy_7
from
(select pc.client_id,
max(id) as max_id
from parameters_table pc
where (pc.status_causes like '%BlaBla%')
group by pc.client_id
) t
join parameters_table pc on t.max_id = pc.id
) pc on pc.client_id = m.client_id
При этом, если всё вынести из left join, то отрабатывает за 2.5 минуты:
select m.*, pc.*
from main_table m
left join ...
left join ...
left join (select pc.client_id,
max(id) as max_id
from parameters_table pc
where (pc.status_causes like '%BlaBla%')
group by pc.client_id
) t
left join parameters_table pc on t.max_id = pc.id
Вопрос - почему так может быть?
Сборка персонального компьютера от Artline: умный выбор для современных пользователей