Индекс для group by
(= неявный order by
)
...
GROUP BY tc.id
Группа по неявной сортировке выполняет tc.id.
tc.idне указан в качестве возможного ключа.
, но t.transaction_id равен .
Измените код на
SELECT t.id
FROM account_transaction t
JOIN transaction_code tc ON t.transaction_code_id = tc.id
JOIN account a ON t.account_number = a.account_number
GROUP BY t.transaction_code_id
Это позволит поместить потенциальный индекс transaction_code_id
вПосмотреть.
Индексы для объединений
Если объединения (почти) полностью объединяют три таблицы, нет необходимости использовать индекс, поэтому MySQL не использует.
Другие причины не использовать индекс
Если большой% рассматриваемых строк (40% IIRC) заполнены тем же значением.MySQL не использует индекс. (потому что не использовать индекс быстрее)