Mysql组通过查询优化

时间:2012-05-27 14:18:13

标签: mysql query-optimization

我在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行。我知道分组并且具有最大功能太昂贵了。我该怎么做才能优化这个查询。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

内部查询必须检查所有行以确定聚合最大值;如果要优化此项,请将包含最大值的计算字段添加到客户表中,然后选择该字段。

然后诀窍是让该字段保持最新状态:)