PEAKTOP wrote:
Видать из-за того, что Q.TMC_ID+0 вычисляет и сравнивает с полученным значением, а не со значением из таблицы.
Из-за того, что PLAN показывает не только какие использованы или не использованы индексы, а и в каком порядке объединялись (в случае иннер - пересекались и соответсвенно усекались) таблицы. Ну и из-за того, что если на полях двух таблиц, входящих в условие, имеются индексы, то оптимизатору дана воля выбирать какая таблица будет ведущей, то есть перебираться, а какая ведомой, то есть усекаться поо индексу. И он не всегда оказывается прафф. А ежели разработчик, интеллект которого (или дополнительные знания о своих таблицах) выше, чем у оптимизатор, на полях одной из них в условии задасть фиктивное выражение, то индексом по ним он (оптимизатор) воспользоваться уже не может и объединяет в таком порядке, чтоб использовать индекс на другой. А в частном случае этого запроса индекс, использование которого мы отсекли в объединении и изменили этим порядок перебора, использовал для группировки (order by мы не трогали). Что тоже не всегда гуд, зависит от объёмов данных и распределения значений в индексе.
-- Regards. Ded.

