Мне нужна помощь в оптимизации запроса или таблицы MySQL
Когда я запускаю этот запрос, он возвращает в 0,01 с 650 записями:
select mm, name, display, year
from tbl d
where active = 1 and tbl2_id = 'val' and lvl_id = 9
order by mm;
Когда я запускаю этот запрос, он возвращается вболее 15 с с одинаковыми записями:
select d.mm, d.name, d.display, d.year, a.year year2
from tbl d left join tbl a on d.mm = a.mm and a.tbl2_id = 'val2'
where d.active = 1 and d.tbl2_id = 'val' and d.lvl_id = 9
order by d.mm;
Когда я запускаю его таким образом, это также занимает более 15 с:
select mm, name, display, year,
(select a.year from tbl a where a.mm = mm and a.tbl2_id = 'val2') year2
from tbl
where active = 1 and tbl2_id = 'val' and lvl_id = 9
order by mm;
таблица содержит несколько записей для мм.Мне нужно получить все записи, где tbl2_id = 'val' и, если есть запись для этого мм, где tbl2_id = 'val2', мне нужно значение "year" из записи val2.В настоящее время в tbl содержится 13 тыс. записей, и для каждого заданного мм не более 10 записей, поэтому я не думаю, что этот запрос должен занимать более 15 с.У меня есть индексы mm, active, tbl2_id и lvl_id.
Я делал подобные вещи в MSSQL практически без задержки.