Анализ запросов в данном сервисе — не является заменой команде EXPLAIN, которая ориентирована на анализ производительности запроса, а является скорее дополнением, которое анализирует запрос с точки зрения его синтаксиса.
После регистрации на сайте по адресу https://tools.percona.com, Вам становятся доступными два сервиса:
«Configuration wizard» и «Query adviser». Рассмотрим их подробнее
Configuration wizard — позволяет на основе пошагового опроса (всего 7 шагов) получить готовую конфигурацию my.cnf в которой учтены именно ваши условия работы.
Пример экрана с запросом:
Так выглядит экран с итоговой конфигурацией (на скриншоте часть my.cnf файла):
Query adviser — позволяет указав SQL запрос получить рекомендации по его оптимизации с точки зрения синтаксиса (еще раз подчеркну, что сервис не анализирует план выполнения запроса ввиду отсутствия данных о конфигурации сервера и наличия индексов).
Пример запроса:
SELECT
p.shopId,
p.typeId,
MIN(p.price) AS price
FROM
modelPrice p,
modelItem i
WHERE
p.modelItemId = i.id AND
i.modelId = '5250' AND
p.price > 0
GROUP BY
p.shopId,
p.typeId
Рекомендации сервиса:
и более развернуто
Все конфигурации и анализы SQL-запросов сохраняются в dashboard для последующего анализа и использования.
В заключение хотелось бы отметить, что несмотря на наличие большого количества подробных руководств и статей по настройке MySQL, данные сервисы могут полезны как для начинающих, так и опытных разработчиков, поскольку систематизируют в компактной форме рекомендации данные в документации.
Комментарии (8)
Borz
20.12.2015 00:39+3удаление «AS» повышает риск появления ошибки (например в случае пропущенных запятых). Лучше лишний раз написать «AS», чем потом выискивать ошибку. Это я к тому, что в правиле ALI.001 я бы сделал инверсию — рекомендовать написать «AS», чем рекомендовать его убрать.
maxic
20.12.2015 01:17Я конечно долго возился с этим запросом, получился он «монстрообразным» (по другому сделать было не реально), но…
You're awesome! We couldn't find any problems with this query.
Обратите внимание на сам запрос
http://easycaptures.com/fs/uploaded/1053/4342879889.png
Даже как то странно :)
Я его считал что он «не очень»maxic
20.12.2015 01:26Хотя соглашусь наверно с сервисом — лучше его составить для этой задачи было наверно не реально
Выполняется он кстати очень быстро (несмотря на свой «монстрообразный вид») и EXPLAIN показывает везде Using where; Using index и т.п.
duzorg
20.12.2015 19:21«Монстрообразность» этого запроса повышается, ввиду присутствия подчеркиваний орфографии, отсутствия подсветки синтаксиса и невозможностью копирования :)
noder
Немного не понял про первый совет. Не вижу в теле запроса полей, которые не учавствовать бы в группировке или же не были аггрегирующими функциями. Или может быть тестировался немного другой запрос, нежели приведённый в статье.
noder
Кстати когда я пришёл в мир MySQL из Oracle, я не мог поверить что в SELECT части можно указывать поля, которые не участвуют в группировке или не используются в аггрегирующих функциях. Но ничего, со временем втянулся.