gpt4 book ai didi

MySQL group-by 非常慢

转载 作者:IT老高 更新时间:2023-10-29 00:10:12 25 4
gpt4 key购买 nike

我有 followwing SQL 查询

SELECT CustomerID FROM sales WHERE `Date` <= '2012-01-01' GROUP BY CustomerID

查询执行了超过 11400000 行并且运行速度非常慢。执行需要3分钟多。如果我删除 group-by 部分,运行时间将低于 1 秒。这是为什么呢?

MySQL 服务器版本是 '5.0.21-community-nt'

Here is the table schema:
CREATE TABLE `sales` (
`ID` int(11) NOT NULL auto_increment,
`DocNo` int(11) default '0',
`CustomerID` int(11) default '0',
`OperatorID` int(11) default '0',
PRIMARY KEY (`ID`),
KEY `ID` (`ID`),
KEY `DocNo` (`DocNo`),
KEY `CustomerID` (`CustomerID`),
KEY `Date` (`Date`)
) ENGINE=MyISAM AUTO_INCREMENT=14946509 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

最佳答案

尝试在 (Date,CustomerID) 上放置一个索引。

查看 mysql 手册以优化 group by 查询:- Group by optimization

如果你使用EXPLAIN,你可以了解mysql是如何生成结果的:-

EXPLAIN SELECT CustomerID FROM sales WHERE `Date` <= '2012-01-01' GROUP BY CustomerID

这将告诉你 mysql 使用哪些索引(如果有)来优化查询。这在了解哪些索引适用于哪些查询时非常方便,因为您可以尝试创建索引并查看 mysql 是否使用它。因此,即使您不完全了解 mysql 如何计算聚合查询,您也可以通过反复试验创建有用的索引。

关于MySQL group-by 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10278878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com