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列上添加一个索引,这应该会使您的查询明显更快。

此外,该HAVING子句似乎没有用,因为COUNT(item)它不能返回 0,因为该项目一开始就不会在表中。

于 2012-10-23T00:36:18.583 回答