Использование индекса, использование временного, использование файловой сортировки - как это исправить?
Я работаю над системой отслеживания событий, которая использует несколько справочных таблиц, а также первичную таблицу журналирования. В отчете яНаписание, объект может быть выбран для просмотра статистики. Интерфейс показывает все объекты в порядке убывания важности (т. Е. Попаданий).
Схема для двух таблиц (слегка урезанная, но вы понимаете суть):
CREATE TABLE IF NOT EXISTS `event_log` (
`event_id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(5) DEFAULT NULL,
`object_id` int(5) DEFAULT NULL,
`event_date` datetime DEFAULT NULL,
PRIMARY KEY (`event_id`),
KEY `user_id` (`user_id`),
KEY `object_id` (`object_id`)
);
CREATE TABLE IF NOT EXISTS `lookup_event_objects` (
`object_id` int(11) NOT NULL AUTO_INCREMENT,
`object_desc` varchar(255) NOT NULL,
PRIMARY KEY (`object_id`)
);
Запрос яУ меня возникли проблемы с ниже. Он отлично работает с моей таблицей ~ 100 записей, но ОБЪЯСНЕНИЕ меня немного беспокоит.
explain SELECT
el.object_id,
leo.object_desc,
COUNT(el.object_id) as count_rows
FROM
event_log el
LEFT JOIN lookup_event_objects leo ON leo.object_id = el.object_id
GROUP BY
el.object_id
ORDER BY
count_rows DESC,
leo.object_desc ASC
Возвращает:Using index; Using temporary; Using filesort
И что'неправильно с моей схемой и / или запросом для MySQL, чтобы прибегнуть кtemporary
а такжеfilesort
? Или это настолько оптимизировано, насколько это возможно, используя ORDER BY?