从表sql server中删除数百万条记录

时间:2014-02-15 09:43:22

标签: sql-server

我有一张包含24亿条记录的表格,我需要使用一些过滤器从该表格中删除大约5亿条记录。

这是我目前的查询:

SET ROWCOUNT 1000
delete_more:
DELETE FROM hwbss..tblsdr WHERE dst <= 123456444
IF @@ROWCOUNT > 0 GOTO delete_more
SET ROWCOUNT 0

删除记录需要花费大量时间。

问题是什么?如何加快删除速度。

1 个答案:

答案 0 :(得分:0)

首先要将数据库恢复模型设置为简单。

ALTER DATABASE Database Name
SET RECOVERY SIMPLE

删除操作记录每行和每行的详细信息,因此随着日志的不断增长需要更多时间。

然后,禁用表中的约束和索引(如果有)。删除操作完成后,您可以重建索引。

替代方法:

您还可以将现有表格中的数据(500 M记录)插入到与现有表格同名的新表格中,但是在不同的模式中,例如Tmp.TableName。然后,您可以删除现有表并使用

更改Tmp表的模式
ALTER SCHEMA [SchemaName]
TRANSFER [Tmp].[TableName]