2017-04-05 2 views
3

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을 강제 실행하는 방법이 있습니까?

+0

이 문제는 혼자 해결할 수 있습니다. Magento 소스를 편집하여 쿼리에서 인덱스를 사용할 수있게합니다. 그것은 매우 못생긴 해결책이지만 작동합니다. –

답변