0

私は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)の特定のwhere条件(1つまたは2つ)を満たす顧客数を見つけます。しかし、このクエリは、ローカルマシンでは約30分、高構成サーバー(約20 GBのRAMと8コアプロセッサ)では13秒かかります。テーブルに13行のlac行があります。groupbyとmax関数を持つのはコストがかかりすぎることを私は知っています。このクエリを最適化するために何ができますか。なにか提案を?

4

1 に答える 1

0

The inner query has to inspect all rows to determine the aggregate maximum; if you want to optimize this, add a calculated field that contains the maximum to your customer table and select on that.

The trick is then to keep that field up-to-date :)

于 2012-05-27T14:27:53.123 に答える