日期:2014-05-17  浏览次数:20394 次

sql2008 很奇怪的一个sql问题
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秒就查询出来
求高手解答
在线急等……

------解决方案--------------------
改成这样:

SELECT     UserId,
 UserName,
                                
                                SUM(Amount) AS allBuyMoney,
  
                      FROM      Cp_PrintOut WITH ( NOLOCK )
                  &nbs