【发布时间】:2021-03-16 01:03:05
【问题描述】:
我正在尝试找到从表中删除数据的最快方法。我的逻辑是对于给定的 Lot_ID,Table1 中只有最近 2 天的数据,并且 ID 是表中的唯一主键。
我的数据不多,但执行以下查询仍需要大约 8-9 分钟。
WITH CTE AS
(
select t.ID
from (select t1.*,
DENSE_RANK() over (partition by Lot_ID order by TRY_CONVERT(DATE, DATEADD(second, t1.starttime, '19700101') )
desc) as seqnum
from Table1 t1
) t
where seqnum >2
)
DELETE Table1 WHERE EXISTS(select 1 from CTE where CTE.ID = Table1.ID )
有没有最快或更好的方法来做到这一点?
【问题讨论】:
-
临时表可以为您做到这一点(历史表的保留期)
标签: sql sql-server datetime greatest-n-per-group sql-delete