gpt4 book ai didi

SQL查询删除超过特定行数的最旧行?

转载 作者:行者123 更新时间:2023-12-04 17:58:59 25 4
gpt4 key购买 nike

我有一个表,其中包含我正在编写的程序的日志条目。我正在寻找有关 SQL 查询(我使用的是 SQL Server Express 2005)的想法,该查询将保留最新的 X 条记录,并删除其余记录。我有一个日期时间列,它是日志条目的时间戳。

我认为类似以下内容会起作用,但我不确定 IN 子句对于大量记录的性能。性能并不重要,但我不妨在第一次就尽我所能。

DELETE FROM MyTable WHERE PrimaryKey NOT IN
(SELECT TOP 10,000 PrimaryKey FROM MyTable ORDER BY TimeStamp DESC)

我应该提到这个查询将每天运行 3-4 次(作为另一个进程的一部分),因此与将保留的记录数相比,每个查询将删除的记录数将很少。

最佳答案

尝试这个:

DECLARE @X int
SELECT @X=COUNT(*) FROM MyTable
SET @X=@X-10000

DELETE MyTable
WHERE PrimaryKey IN (SELECT TOP(@x) PrimaryKey
FROM MyTable
ORDER BY TimeStamp ASC
)

这取决于您是否删除少于 10,000 行,如果是这样,这可能会运行得更快,因为它标识要删除的行,而不是要保留的行。

关于SQL查询删除超过特定行数的最旧行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2561134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com