我有一个 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.01 秒而不是 10 秒内回答。但我认为更改 magento 代码的源文件不是一个好主意。
有没有办法强制 MySQL 5.7 在索引选择方面以与 5.5 类似的方式工作?
最佳答案
遗憾的是,只有 MySQL 从 5.7 降级到 5.5 才能为我解决类似的问题。 Magento sql query have no index
关于php - MySQL 5.5 到 5.7 停止使用索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43225701/