php - MySQL 5.5 到 5.7 停止使用索引

标签 php mysql magento

我有一个 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/

相关文章:

php - Paypal 未继续接收付款

php - 提交时发送申请表并插入数据库

php - 如何从MySql中删除重复用户但保存原始用户

unit-testing - 无法在 EcomDev PHPUnit 测试中获取 session 单例

javascript - 当在 jquery.menu-aim 中打开父菜单时,强制子菜单可见

php imagecolorat 返回 0。为什么?

javascript - 将 ID 应用于按钮以进行动态链接

javascript - 如何在 Express 路线内使用另一个函数/多个函数来操作数据库中的数据?

PHP $_post 没有获取同名多输入框的值

javascript - Magento - 表单上的自定义验证不起作用