Vin*_*nie 0 sql-server sql-server-2012
我的一个表中有42,715,078个条目,我想删除TOP 42,715,000行(我想保留78个条目).
谁知道我能做到谁?
PS:我不想删除表,只想删除表的条目.
可能最好的办法是选择要保留在临时表中的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仅被最小化记录.