两句SQL对比


--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


[quote]
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 毫秒。
[/quote]
====================================================================


--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


[quote]
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 毫秒。
[/quote]

虽然能得到相同的结果,但是过程是多么不同!!!
select COUNT(1) from t_team
--297261
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值