Я пытаюсь упростить запрос, чтобы выяснить, почему он так медленно работает на рабочем сервере. Идея состоит в том, чтобы взять X самых последних записей для нумерации страниц. Проблема в том, что оптимизатор MySQL, похоже, хочет использовать сортировку файлов вместо первичного ключа (ID
). Удаляя все посторонние вещи, следующие операции работают по желанию, используя индекс (основной):
EXPLAIN SELECT ID FROM table ORDER BY ID DESC
Однако эти варианты относятся к сортировке файлов:
EXPLAIN SELECT ID, field2 FROM table ORDER BY ID DESC
EXPLAIN SELECT * FROM table ORDER BY ID DESC
Мне нужно вернуть несколько полей, чтобы это не работало ... Я могу обойти проблему в упрощенном запросе с помощью:
EXPLAIN SELECT * FROM table FORCE INDEX (Primary) ORDER BY ID DESC
но я не понял, как преобразовать это в более крупный запрос с объединениями таблиц. Я что-то упускаю очень просто?