sql2008 很奇怪的一个sql问题

渴望蜕变 2014-01-18 03:23:12
SELECT UserId,
UserName,

SUM(Amount) AS allBuyMoney,

FROM Cp_PrintOut WITH ( NOLOCK )
WHERE 1 = 1
AND ReceiveTime BETWEEN '2013-12-01 0:00:00'
AND '2014-1-5 0:00:00'
AND Status >2
GROUP BY UserId,UserName
sql语句一样 当我把时间 调整到eceiveTime BETWEEN '2013-1-01 0:00:00' AND '2014-1-5 0:00:00'
速度反而快
原因大概知道 当时间段小的时候sql自动按照sort group by 来执行
而相反 按照hash group by 执行
求解 如何才能都按照 hash group by 执行
因为在我执行时间短的范围内会超时 执行时间范围大的反而10秒就查询出来
求高手解答
在线急等……
...全文
74 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
渴望蜕变 2014-01-18
  • 打赏
  • 举报
回复
引用 1 楼 yupeigu 的回复:
改成这样: SELECT UserId, UserName, SUM(Amount) AS allBuyMoney, FROM Cp_PrintOut WITH ( NOLOCK ) WHERE 1 = 1 AND ReceiveTime BETWEEN '2013-12-01 0:00:00' AND '2014-1-5 0:00:00' AND Status >2 option(hash group)
3Q 我就是要这个
  • 打赏
  • 举报
回复
这个是查询提示,用于修改sql server,产生相应的执行计划
  • 打赏
  • 举报
回复
改成这样: SELECT UserId, UserName, SUM(Amount) AS allBuyMoney, FROM Cp_PrintOut WITH ( NOLOCK ) WHERE 1 = 1 AND ReceiveTime BETWEEN '2013-12-01 0:00:00' AND '2014-1-5 0:00:00' AND Status >2 option(hash group)

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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