У меня есть Magento 1.9.2.1. И он успешно работает на Apache2 и MySQL 5.5.
Я попытался перенести его на другой сервер и использовал для него NGINX и MySQL 5.7.
Но сайт начал очень медленно (12 секунд против 2). После нескольких часов отладки я обнаружил, что в одном запросе есть проблема:
SELECT `main_table`.`entity_id`, `main_table`.`name`, `main_table`.`path`, `main_table`.`is_active`, `main_table`.`is_anchor`, `url_rewrite`.`request_path` FROM `catalog_category_flat_store_1` AS `main_table` LEFT JOIN `core_url_rewrite` AS `url_rewrite` ON `url_rewrite`.`category_id` = `main_table`.`entity_id` AND `url_rewrite`.`is_system` = 1 AND `url_rewrite`.`store_id` = 1 AND `url_rewrite`.`id_path` LIKE 'category/%' WHERE (`main_table`.`include_in_menu` = '1') AND (`main_table`.`is_active` = '1') AND (`main_table`.`path` like '1/2/%') ORDER BY `main_table`.`position` ASC;
И по объяснению я обнаружил, что индекс не используется. На старом сервере MySQL 5.5 объясните команду, показывающую используемый индекс. Как только я заставляю использовать индекс – новые ответы сервера в 0.01s вместо 10s. Но я думаю, что не рекомендуется менять исходные файлы пурпурного кода.
Есть ли способ заставить MySQL 5.7 работать так же, как 5.5 в выборе индекса ?.
К сожалению, только MySQL понижает с 5,7 до 5,5 фиксированной аналогичной проблемы для меня. У запроса Magento sql нет индекса