mysql - 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:
解释 Mariadb:
解决方案
我无法解释 MySQL 和 MariaDB 之间的性能差异,但我可以建议以下索引,如果使用它,可能会提高两个数据库的性能:
CREATE INDEX idx ON large_table (yyyymmdd, customer_id, product_id);
该索引涵盖了整个WHERE
子句,如果您的日期范围相当具体,应该可以使用该索引。
推荐阅读
- azure-service-fabric - 访问 Service Fabric 中的无状态 Web 服务 api
- excel - 调用子程序的输出不正确
- python-3.x - Docker Flask 应用程序多次加载图像
- python - 创建非对称多维数组
- python - 为什么 QChart 对象的滚动方法不起作用
- python - 大写输入的正确格式是什么?
- c++ - C++ 代码是否只能针对特定的 CPU 架构进行编译。有没有办法将它编译到所有架构
- php - 如何在 PHP 中使用 json 解码访问多维数组中的对象?
- algorithm - 创建尽可能接近均匀分布的样本的算法?
- python - 股票代码列表的属性错误