Sql server 如何从大型表中快速删除大量数据(sql server)
我想从一个百万行以上的表中删除大约90%的行。我能做些什么来加快速度?e、 g.如果我打开简单恢复模式,这会有帮助吗?使用将您不想删除的行复制到临时表中,然后将该表而不是删除。将行复制回旧表中。记得先去 如果您有标识列,则在租用数据后,使用类似这样的方法重新设置表的种子Sql server 如何从大型表中快速删除大量数据(sql server),sql-server,performance,sql-server-2005,Sql Server,Performance,Sql Server 2005,我想从一个百万行以上的表中删除大约90%的行。我能做些什么来加快速度?e、 g.如果我打开简单恢复模式,这会有帮助吗?使用将您不想删除的行复制到临时表中,然后将该表而不是删除。将行复制回旧表中。记得先去 如果您有标识列,则在租用数据后,使用类似这样的方法重新设置表的种子 declare @seed int select @seed = max(identity_col)+1 from tableName DBCC CHECKIDENT (orders, table_name, @seed) 考
declare @seed int
select @seed = max(identity_col)+1 from tableName
DBCC CHECKIDENT (orders, table_name, @seed)
考虑到要删除90%的行,可能最快的方法是选择要保留在新表中的10%行。如果无法将其余行复制到另一个表中,则截断并复制回 …删除索引是编程方面唯一可以做的事情。在这种情况下,删除索引并重新创建它们可能会有所帮助 …或获得更快的光盘子系统,主要用于数据 恢复模式没有帮助-恢复模式表示日志在(can bbe隐式)提交后立即可删除,但其中没有任何内容可以避免日志项被写入。添加
IsDeleted(BIT)
标志,将90%的日志项设置为1,并在表上创建一个视图,该视图仅显示IsDeleted=0
的行
删除总是a)一个资源密集型操作,b)破坏任何责任的可能性-如果可能的话,出于两个原因(性能和数据破坏),我会尽量避免它。改用“软删除”方法。nice!我有身份栏,所以必须处理这个问题,但这没关系。+1-这是最低限度登录至少2005+(不确定以前的版本),所以它应该是超级快速。请记住重建索引所需的时间。