首页 > 解决方案 > MariaDB Group by 比 MySQL 慢

问题描述

此查询在 MySQL 上返回 2.5 秒,在 MariaDB 上返回 13.5 秒。这是一张大表,所以我只选择了 200 万行的一小部分数据。

我在多台服务器上尝试过,结果总是大致相同,我错过了什么?

为什么 MariaDB 会这么慢?

    SELECT yyyymmdd,
           customer_id,
           product_id,
           sum(qty),
           sum(value)
    FROM large_table
    WHERE yyyymmdd >= 20180101
      AND yyyymmdd < 20180201
    GROUP BY 1,2,3
    ORDER BY NULL

注意:我尝试过索引不同的组合等,但没有什么太大的不同。

解释Mysql:

mysql解释

解释 Mariadb:

mariadb解释

标签: mysqlgroup-bymariadb

解决方案


我无法解释 MySQL 和 MariaDB 之间的性能差异,但我可以建议以下索引,如果使用它,可能会提高两个数据库的性能:

CREATE INDEX idx ON large_table (yyyymmdd, customer_id, product_id);

该索引涵盖了整个WHERE子句,如果您的日期范围相当具体,应该可以使用该索引。


推荐阅读