У меня действительно большой сложный запрос. Я пытаюсь оптимизировать использование MySQL EXPLAIN SELECT
или EXPLAIN EXTENDED SELECT
.MySQL EXPLAIN - он постоянно дает мне разные объяснения каждый раз
Если я запустил его против запроса, я увижу, что каждая таблица в запросе использует Using where
в столбце Extra
, что отлично.
Данные не будут изменены вообще, я уйду и сделаю чашку чая или что-то еще, вернусь и снова запустите EXPLAIN
.
На этот раз, всего через несколько минут, только 20% таблиц составляют Using where
, основная таблица теперь Using index; Using temporary; Using filesort
, и мой день становится кошмаром, пытающимся отладить это.
Я знаю, что иногда такие вещи, как временные таблицы и файловые хранилища, более эффективны, чем использование где предложения и индексы. Но не в случае этой базы данных размером 10 ГБ, а создание временных таблиц и filesorts полностью уничтожает сервер.
Любые идеи, почему это происходит? Есть ли такая логика или причина?
Кто-то добавил указатель на стол, пока вы выпили чашку кофе. –