码迷,mamicode.com
首页 > 数据库 > 详细

奇怪的SQLserver执行

时间:2015-02-03 22:51:32      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:

 今天工作遇到,下面这段执行超慢,几乎不出来,在旧服务器上运行是可以的,一样代码,很快,在新虚拟服务器上,超慢。

     select * from 
        (
            select RowNum=row_number() over(order by AutoId desc),StartTime,cast(testtime/1000.00 as decimal(10,2)) as testtime,AutoId
            from dbo.FTMaster M
             WITH(NOLock) Where StartTime >=2014-01-01 00:00:00.000 and StartTime <2014-12-31 23:00:00.000 and ModelIc=XXX and Result=0 and TestType=3            
            and exists
            (    
                select AutoId from 
                (
                    select Min(BB.autoid) AutoID 
            from (Select Max(StartTime) as starttime,SN From dbo.FTMaster WITH(NOLock)
             Where StartTime >=2014-01-01 00:00:00.000 and StartTime <2014-12-31 23:00:00.000 and ModelIc=XXX and TestType=3 group by Sn) as AA inner join
            (Select AutoID,SN,StartTime From dbo.FTMaster WITH(NOLock)   
             Where StartTime >=2014-01-01 00:00:00.000 and StartTime <2014-12-31 23:00:00.000 and ModelIc=XXX and TestType=3 ) As BB
             on AA.SN=BB.SN And AA.StartTime=BB.StartTime group by BB.SN ) t where t.AutoId=M.AutoId ) ) as MasterTable WHERE RowNum between (1 - 1) * 12430 + 1 and 1 * 12430

执行里面的又很快, 为什么呢。

       select RowNum=row_number() over(order by AutoId desc),StartTime,cast(testtime/1000.00 as decimal(10,2)) as testtime,AutoId
            from dbo.FTMaster M
             WITH(NOLock) Where StartTime >=2014-01-01 00:00:00.000 and StartTime <2014-12-31 23:00:00.000 and ModelIc=XXX and Result=0 and TestType=3            
            and exists
            (    
                select AutoId from 
                (
                    select Min(BB.autoid) AutoID 
            from 
                     (Select Max(StartTime) as starttime,SN From dbo.FTMaster WITH(NOLock) 
             Where StartTime >=2014-01-01 00:00:00.000 and StartTime <2014-12-31 23:00:00.000 and ModelIc=XXX and TestType=3 group by Sn) as AA 
                     inner join 
            (Select AutoID,SN,StartTime From dbo.FTMaster WITH(NOLock)   
             Where StartTime >=2014-01-01 00:00:00.000 and StartTime <2014-12-31 23:00:00.000 and ModelIc=XXX and TestType=3 ) As BB 
             on AA.SN=BB.SN And AA.StartTime=BB.StartTime 
                    group by BB.SN
                ) t where t.AutoId=M.AutoId 
            )    

 

奇怪的SQLserver执行

标签:

原文地址:http://www.cnblogs.com/jjoo/p/4271075.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!