Я борюсь с оптимизацией запроса MySQL.MySQL оптимизация запросов слева объединены индексы
select *
from course as t1
left join semester as t3 on t1.semester=t3.id
where t1.visibleFrom <= '1364621522'
and '1364621522' <= t1.visibleTo
order by t3.begin desc, t1.name;
Об этом сообщает EXPLAIN
использовать ALL-запрос на таблицу курсов. Таблица имеет несколько разных индексов (visibleFrom, visibleTo, сочетание обоих, имя, семестр). name
является столбцом varchar, begin
, visibleFrom
и visibleTo
являются целыми числами, которые также могут быть нулевыми.
Если я откажусь от присоединения к t3
и принудительно использовать имя индекса, оно работает как-то.
Любые идеи, почему этот запрос не использует индексы?