У вас проблема с вашим запросом.Когда выполняется группировка по, какой item_created выбран для каждой группы?MySQL по умолчанию выберет один для каждой группы более или менее случайным образом (из группы).Поскольку для каждой группы используется только один элемент item_created, для ее сортировки требуется временная таблица.
Я бы посоветовал вам использовать одну из функций агрегирования, например min () или max (), чтобы получить определенное значение item_createdсортировать по.Это все еще не решит проблему с временными таблицами, индекс item_id - это лучшее, что вы можете сделать.
SELECT item_id, max(item_created) as ic FROM titem
GROUP BY item_id
ORDER BY ic;
Интересно отметить, что некоторые базы данных, например Oracle (как мне сказали), будут выбрасыватьи ошибка в исходном запросе, так как item_created отсутствует ни в выбранных полях статистической функции, ни в предложении group by.MySQL может быть настроен для имитации этого поведения.