【发布时间】:2012-05-27 22:27:53
【问题描述】:
我在mysql中有这样的查询
select count(*)
from (
select count(idCustomer)
from customer_details
where ...
group by idCustomer having max(trx_staus) = -1
) as temp
所以基本上找到满足某些条件(一个或两个)且最大交易状态 = -1(其他可以是 2、3、4)的客户数量。但是这个查询在我的本地机器上大约需要 30 分钟,在高配置服务器上大约需要 13 秒(大约 20 GB 内存和 8 核处理器)。我在表中有 13 行。我知道 group by 和 max 功能太昂贵了。我能做些什么来优化这个查询。有什么建议吗?
【问题讨论】:
-
WHERE ...中的简单条件以外的任何内容? -
不,什么都没有,而且条件如此简单,有些时间没有使用,在上述情况下我没有使用,但我需要一些时间,这就是我提到的原因。
-
WHERE、GROUP BY 和 MAX 子句中的所有字段是否都有相应的索引?
-
是的,所有必填字段都已编入索引