我正在尝试计算销售的发生。
这是我的问题:
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
为什么这个查询需要这么长时间,我该如何改进呢?
答案 0 :(得分:0)
COUNT(item)
替换为COUNT(*)
。前者检查item
中的值是否为NULL,而不是后者。 item
列上添加一个索引,这样可以显着加快查询速度。此外,HAVING
子句似乎没用,因为COUNT(item)
不能返回0,因为该项目不会出现在表格中。