Я использую простой запрос 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:
Структура таблицы событий
Индексы табличных событий
Таблица EventLogFiles структура
Таблица индексов EventLogFiles
UPDATE:
Я пытался создать два новых индекса, но оба все еще заставляют 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)