2013-11-21 155 views
1

我有一个表在我的数据库,只有当一个特定的运行报告,并可以生长在上述期间相当大的被删除的记录。我正在为报表运行时实施批量删除。只想获得关于路线的意见。批量删除记录在数据库

While Exists (select top (1) StoreNbr from #Test WHERE DATEDIFF(dd, LogDate, GETDATE()) >= 60) 
Begin 
      delete top (5000) from #Test WHERE DATEDIFF(dd, LogDate, GETDATE()) >= 60 
End 
  1. 我应该使用WAITFOR延迟内环路,这是否有任何实际的好处?
  2. 我应该禁用表上的索引以前在执行删除和重新启用它们一旦完成?
+1

请务必注明您正在使用的SQL方言。我从语法上猜到了MS SQL Server,但我可能是错的。 – Charles

回答

0

如何使用存储过程?我过去使用过它。在存储过程中包含删除和选择语句。让您的报告执行存储过程,您的报告将在一步获取信息和删除记录。

+0

报告本身就是一个存储过程,并且恰好清除了此表作为最后一步,但导致SSIS包因大量数据被删除而失败: 从table1中删除,其中日期<@Date。我只是希望在以批量与多列索引中删除约10万条记录的最佳途径某些输入。 – user1769667

+1

在删除之前尝试删除索引,然后在删除完成后重新创建索引。 – vasin1987