【问题标题】:Magento sql query have no indexMagento sql查询没有索引
【发布时间】:2017-03-27 14:48:23
【问题描述】:

我遇到了 SQL 查询问题。

目前我在不同的服务器上有两个 magento 版本,都从 1.9.2.4 升级到 1.9.3.2。

问题是,当我使用SHOW FULL PROCESSLIST 检查查询时,我发现它们花费了很多时间。经过一些研究,我尝试在两台服务器上运行相同的查询(直接通过 SQL 命令)。

结果速度为 1:15(68 x 263 行 vs 68 x 961902),一位同事还检查了EXPLAIN SQL 函数,发现在较慢的查询服务器中没有键(索引)。尝试运行添加 USE INDEX () 并使用来自更快查询服务器的密钥,这似乎是问题所在,因为查询的结果和速度相同。

总之,我们认为MYSQL 的某些配置不正确。

也许有人会建议哪些MYSQL 配置或服务器变量会导致此问题? 因为目前我没有想法。我试过谷歌搜索,但没有任何结果可以帮助我。

SQL 查询。

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/3/%')
      AND  (`level` <= 3)
    ORDER BY  `main_table`.`position` ASC

【问题讨论】:

  • 当我将 magento 从使用 MySQL 5.5 的服务器移动到使用 MySQL 5.7 的服务器时,我遇到了同样的问题。这是我的问题stackoverflow.com/questions/43225701/…你找到解决方案了吗?我目前正在尝试找到在 magento 中放置“使用索引”的位置:)
  • 用我的解决方案发布在你的帖子中

标签: mysql magento indexing


【解决方案1】:

最好的索引可能是这些“复合”索引:

main_table:  INDEX(include_in_menu, is_active, path)
url_rewrite: INDEX(is_system, store_id, category_id, id_path)

使用LEFT有什么原因吗?

如果添加这些索引后仍有问题,请提供SHOW CREATE TABLEEXPLAIN SELECT ...

【讨论】:

    【解决方案2】:

    遗憾的是,只有 MySQL 从 5.7 降级到 5.5 解决了这个问题。

    【讨论】:

      【解决方案3】:

      你可以替换

      core_url_rewrite.id_path LIKE 'category/%'
      

      core_url_rewrite.id_path REGEXP '^category/'
      

      或者在查询中再添加一个条件:

      core_url_rewrite.category_id is not null
      

      Magento + MySQL 5.7 = Slow Queries

      【讨论】:

        猜你喜欢
        • 2013-12-02
        • 1970-01-01
        • 2015-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-26
        • 2014-05-30
        相关资源
        最近更新 更多