Запрос MySQL с использованием сортировки файлов и временных параметров

Я использую простой запрос MySQL, но производительность очень плохая из-за использования ORDER BY. Я не могу понять, почему MySQL использует файловую сортировку и временную.

Мой запрос:

EXPLAIN 
SELECT * FROM Events
INNER JOIN EventLogFiles ON ServerID = 42
AND Events.LogFileID = EventLogFiles.LogFileID
ORDER BY ReportID DESC , TimeWritten DESC 
LIMIT 100

Это вывод EXPLAIN:

Mysql EXPLAIN output

Структура таблицы событий

Table Events structure

Индексы таблицы событий

Table Events indexes

Структура таблицы EventLogFiles

Table EventLogFiles structure

Индексы таблицы EventLogFiles

Table EventLogFiles indexes

ОБНОВЛЕНИЕ:

I попытался создать два новых индекса, но оба по-прежнему заставляют MySQL использовать файловую сортировку и временную.

ALTER TABLE Events ADD INDEX  `ReportID_TimeWritten_ServerID_LogFileID` ( ReportID DESC,  TimeWritten DESC,  ServerID,  LogFileID)

ALTER TABLE Events ADD INDEX  `ServerID_LogFileID_ReportID_TimeWritten` ( ServerID,  LogFileID, ReportID DESC,  TimeWritten DESC)
5
задан koen 3 April 2012 в 20:19
поделиться