发现having count(autoid)>1 CPU性能损耗极大.
怎么解决?
SELECT top 20 SellID FROM [T_Sell_Property] WHERE (ValueString='黑色' AND LabelID=2) 
GROUP BY SellID having count(autoid)>1 ORDER BY SellID DESC这是我的语句

解决方案 »

  1.   

    性能消耗大的应该是 GROUP BY 和 ORDER BY 两个吧
      

  2.   

    没有having 这句 cpu都不怎么动,加上这句就100多
    order 起初是消耗比较大,但是我加了索引就好了。
      

  3.   

    是不是没有在autoid上加索引
    试试看
      

  4.   

    having count(autoid)>1
    ------------------------------autoid 不能换成别的字段吗?
      

  5.   

    换任何字段都一样.
    另外我已经确认,开销最大的地方就在having count
    查询用时是不长,主要是cpu和读取操作很多.
      

  6.   

    SELECT top 20 SellID FROM [T_Sell_Property] WHERE (ValueString='黑色' AND LabelID=2) 
    GROUP BY SellID having count(autoid)>=2 ORDER BY SellID DESC
     
    >1 改为 >=2 
      

  7.   

    >1 改为 >=2肯定会好些,但是强不会太多count这东西本来就比较糟糕