0

売上の発生をカウントしようとしています。

これが私の質問です:

SELECT item, COUNT(item) FROM sales_raw
    GROUP BY item HAVING (count(item)>=1)
    ORDER BY COUNT(item) DESC

このクエリは、約500,000行のテーブルで約11秒かかります。説明をすると、次のようになります。

id  select_type table   type    possible_keys   key key_len ref rows    Extra
1   SIMPLE  sales_raw   index   NULL    vendor_id   767 NULL    397431  Using temporary; Using filesort

このクエリに時間がかかるのはなぜですか。どうすればこれを改善できますか?

4

1 に答える 1

0
  1. COUNT(item)すべてをに置き換えますCOUNT(*)。前者はの値itemがNULLかどうかをチェックし、後者はチェックしません。
  2. それでも十分な速度が得られない場合は、item列にインデックスを追加してください。これにより、クエリが大幅に高速化されます。

また、そもそもアイテムがテーブルにないため、0を返すことができないため、このHAVING句は役に立たないようです。COUNT(item)

于 2012-10-23T00:36:18.583 に答える