从表SQL Server中删除几个条目

Vin*_*nie 0 sql-server sql-server-2012

我的一个表中有42,715,078个条目,我想删除TOP 42,715,000行(我想保留78个条目).

谁知道我能做到谁?

PS:我不想删除表,只想删除表的条目.

Ken*_*her 6

可能最好的办法是选择要保留在临时表中的78行,然后截断表并将其重新插入.

SELECT * INTO #temp FROM TableName WHERE <Condition that gets you the 78 rows you want>
Run Code Online (Sandbox Code Playgroud)

或者,如果您没有特定的78行

SELECT TOP 78 * INTO #temp FROM TableName
Run Code Online (Sandbox Code Playgroud)

然后

TRUNCATE TABLE TableName
Run Code Online (Sandbox Code Playgroud)

最后但并非最不重要

INSERT INTO TableName
    SELECT * FROM #temp
Run Code Online (Sandbox Code Playgroud)

这样做应该相当快,这取决于您使用什么条件来获取78行,并且您可以避免膨胀日志,因为TRUNCATE仅被最小化记录.