MySQL - выполнение запроса с 2.5 часов до 2.5 минут

187
05 апреля 2018, 13:16

Есть запрос на 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

Вопрос - почему так может быть?

READ ALSO
Получить все товары по id категории

Получить все товары по id категории

Здравствуйте! Есть такой запрос к бд, который возвращает все товары:

231
Как получить определенное кол-во строк до необходимой выборки?

Как получить определенное кол-во строк до необходимой выборки?

Есть отсортированная выборка данныхИз этой выборки необходимо получить данные, которые соответствуют определенному условию (WHERE) + 5 записей...

208
Несколько БД для сайта

Несколько БД для сайта

Всем добрый день! Задумался над тем как сделать несколько БД для одного сайтаЧто бы базы синхронизировались между собой и в случае если одна...

252
UPDATE таблицы, учитывая текущее значение

UPDATE таблицы, учитывая текущее значение

Имеется таблица, в которой большое количество строкПримерная структура:

220