Я бы предложил написать запрос следующим образом:
select t.*
from table_name t
where t.id = (select max(t2.id) from table_name t2 where t2.name = t.name);
Тогда вам нужен индекс для table_name(name, id)
:
create index idx_table_name_name_id on table_name(name, id);
Ваша версия запроса потребует агрегирования дляподзапрос - я не думаю, что MySQL перепишет его.Агрегация, вероятно, может использовать индекс.Однако написание запроса с использованием =
гарантирует оптимальный план выполнения.