having count(autoid)>1 有没有替代方法?

cantops 2007-08-10 12:37:03
发现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

这是我的语句
...全文
456 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hb_gx 2007-08-10
  • 打赏
  • 举报
回复
having count(autoid)>1
------------------------------

autoid 不能换成别的字段吗?
comszsoft 2007-08-10
  • 打赏
  • 举报
回复
是不是没有在autoid上加索引
试试看
cantops 2007-08-10
  • 打赏
  • 举报
回复
没有having 这句 cpu都不怎么动,加上这句就100多
order 起初是消耗比较大,但是我加了索引就好了。
hb_gx 2007-08-10
  • 打赏
  • 举报
回复
性能消耗大的应该是 GROUP BY 和 ORDER BY 两个吧
  • 打赏
  • 举报
回复
使用where子查询试试!
cantops 2007-08-10
  • 打赏
  • 举报
回复
sp4
有其他方法来实现 我这样的需求吗?
sp4 2007-08-10
  • 打赏
  • 举报
回复
>1 改为 >=2肯定会好些,但是强不会太多

count这东西本来就比较糟糕
michaelgy 2007-08-10
  • 打赏
  • 举报
回复
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
cantops 2007-08-10
  • 打赏
  • 举报
回复
换任何字段都一样.
另外我已经确认,开销最大的地方就在having count
查询用时是不长,主要是cpu和读取操作很多.
QQMagicer 2007-08-10
  • 打赏
  • 举报
回复
order by 是最耗时的

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧