MySQL объясняет понимание запросов
Я читал в некоторых блогах и в некоторых статьях, связанных с оптимизацией, как оптимизировать запросы. Я прочитал, что мне нужно использовать индексы и убедиться, что все мои первичный ключ и внешние ключи установлены правильно, используя хорошую схему реляционной базы данных.
Теперь у меня есть запрос, который мне нужно оптимизировать, и я получаю его на EXPLAIN
:
Using where; Using temporary; Using filesort
Я использую MySQL 5.5
Я знаю, что использую WHERE
, но не с моей временной таблицей или файловым телефоном? Что это значит?
Ответы
Ответ 1
Использование временных средств означает, что MySQL должен использовать некоторые временные таблицы для хранения промежуточных данных, вычисленных при выполнении вашего запроса.
Использование filesort - это алгоритм сортировки, в котором MySQL не может использовать индекс для сортировки и, следовательно, не может выполнять полную сортировку в памяти. Вместо этого он разбивает сортировку на более мелкие куски, а затем объединяет результаты для получения окончательных отсортированных данных.
Обратитесь к http://dev.mysql.com/doc/refman/5.0/en/explain-output.html.
Я думаю, вы можете использовать ORDER BY плюс некоторые производные таблицы или подзапросы. Было бы замечательно, если бы вы могли вставить свой запрос и соответствующие данные таблиц/индексов и вывод EXPLAIN.
Ответ 2
Синтаксис:
Explain `MySQL Query`
Пример: EXPLAIN SELECT * FROM categoriesG
Пример: EXPLAIN EXTENDED SELECT City.Name FROM City
JOIN Country ON (City.CountryCode = Country.Code)
WHERE City.CountryCode = 'IND' AND Country.Continent = 'Asia'G
Объяснение следует за запросом mysql
Подробнее об этом подробнее