Magento 1.9.2.1이 있습니다. 그리고 Apache2와 MySQL 5.5에서 성공적으로 실행됩니다.MySQL 5.5 to 5.7 인덱스 사용을 중지했습니다
다른 서버로 마이그레이션하려고 시도했으며 NGINX와 MySQL 5.7을 사용했습니다.
그러나 웹 사이트가 매우 느리게 시작되었습니다 (2 초에 대해 12 초). 디버그의 몇 시간 후, 나는 하나 개의 쿼리에 문제가 있음을 발견했다 :
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 서버 explain 명령. 일단 인덱스 사용을 강요하면 새로운 서버가 10 초 대신 0.01 초에 응답합니다. 하지만 magento 코드의 소스 파일을 변경하는 것은 좋지 않다고 생각합니다.
인덱스를 선택할 때 5.5와 비슷한 방식으로 MySQL 5.7을 강제 실행하는 방법이 있습니까?
이 문제는 혼자 해결할 수 있습니다. Magento 소스를 편집하여 쿼리에서 인덱스를 사용할 수있게합니다. 그것은 매우 못생긴 해결책이지만 작동합니다. –