打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
SQL 两种获取分组排序最后一条记录集合效率测试
-jcstone
declare @Readtime datetime
set @Readtime='2015-9-8'
print convert(nvarchar(30), getdate(),9)
SELECT A.[ID]
      ,A.[AmmeterID]
      ,A.[ReadTime]
      ,A.[ReadNumber]
      ,A.[Status]
      ,A.[Copyist]
FROM  [Log_Ammeter] A left join  ComAmmeter as b
on   a.[AmmeterID] = b.ID
where  A.[ReadTime]= (SELECT MAX([ReadTime])  FROM  [Log_Ammeter]
where [ReadTime] <=@Readtime )  
print convert(nvarchar(30), getdate(),9) 

select * from 
(select row_number() over(partition by AmmeterID order by [ReadTime] desc)as rownum,* 
from [Log_Ammeter]) as T where T.rownum=1

print convert(nvarchar(30), getdate(),9)
 
select A.[ID]
      ,A.[AmmeterID]
      ,A.[ReadTime]
      ,A.[ReadNumber]
      ,A.[Status]
      ,A.[Copyist],* from  [Log_Ammeter] A
inner join (select AmmeterID,max(ReadTime) as ReadTime from [Log_Ammeter] where  ReadTime<=@ReadTime group by AmmeterID) B
on A.AmmeterID=B.AmmeterID and A.ReadTime =B.ReadTime  
 
print convert(nvarchar(30), getdate(),9)

测试结果:
08 23 2016  7:56:14:163PM
(133 行受影响)
08 23 2016  7:56:16:900PM
(133 行受影响)
08 23 2016  7:56:17:397PM

显然,第一种方法耗时近三秒,后一种方法耗时仅0.5秒

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Sql Server 日期格式化函数 (类似Format函数),一般用于存储过程中
时间函数当前时间周的起始日期
sqlserver 通过作业实现定时备份数据库
SQL如何取时间字段的小时和分钟
SQL_Server_2005_数据类型转换函数(描述及实例)
SQL你必须知道的-函数及类型转换
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服