--very very bad code select distinct t.* from t_team a cross apply (select top 1 LTRIM(RTRIM(clinename)) as clinename,cteamcode from t_team where LTRIM(RTRIM(a.clinename)) = LTRIM(RTRIM(clinename)) and dbgndate > GETDATE() order by LTRIM(RTRIM(clinename)) desc) as t order by t.clinename
引用
SQL Server 分析和编译时间:
CPU 时间 = 13 毫秒,占用时间 = 13 毫秒。
SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。
SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。
(835 行受影响)
表 'Worktable'。扫描计数 0,逻辑读取 0 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 't_team'。扫描计数 297266,逻辑读取 24862537 次,物理读取 27 次,预读 3922 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'Worktable'。扫描计数 0,逻辑读取 0 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
SQL Server 执行时间:
CPU 时间 = 654313 毫秒,占用时间 = 167921 毫秒。
====================================================================
--good code select * from ( select cteamcode,clinename,ROW_NUMBER() over (partition by clinename order by dbgndate) rownum from t_team where dbgndate > GETDATE() )t where t.rownum<2 order by 2,3
引用
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。
SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。
SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。
(835 行受影响)
表 't_team'。扫描计数 1,逻辑读取 87 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
SQL Server 执行时间:
CPU 时间 = 31 毫秒,占用时间 = 80 毫秒。
虽然能得到相同的结果,但是过程是多么不同!!!
select COUNT(1) from t_team
--297261