我们有一个包含150+百万条记录的表。我们需要清除/删除所有行。删除操作将永远花费时间,因为它将写入t-logs,并且我们无法更改整个数据库的恢复模式。我们已经测试了truncate table选项。
我们意识到truncate会从表中释放页面,如果我没弄错的话,可以重用这些页面,但不会自动收缩数据库。因此,如果我们想要减小DB大小,我们真的需要在截断表之后运行shrink db命令。
这是正常的程序吗?有什么我们需要小心或注意的吗,或者有没有更好的选择?
发布于 2009-11-21 04:19:14
“删除所有行”...删除表(并使用相同的模式/索引重新创建一个空的表)不是更可取吗?(我个人喜欢“重新开始”;-)
这个截断表也很好,是的,如果你想恢复空间,之后可能需要DBCC SHRINKFILE。
发布于 2009-11-21 04:24:17
truncate就是你要找的东西。如果之后你需要瘦身,那就去做个心理医生。
这个MSDN refernce (如果您正在谈论T-SQL)在幕后比较删除行和截断。
发布于 2009-11-21 04:24:01
对于Truncate table (以及drop table)需要记住的一件事是,如果您有引用该表的外键,这将不起作用。
https://stackoverflow.com/questions/1772984
复制相似问题