我在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个lac行。我知道分组并且具有最大功能太昂贵了。我该怎么做才能优化这个查询。有什么建议吗?
答案 0 :(得分:0)
内部查询必须检查所有行以确定聚合最大值;如果要优化此项,请将包含最大值的计算字段添加到客户表中,然后选择该字段。
然后诀窍是让该字段保持最新状态:)