首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >批量删除(truncate vs delete)

批量删除(truncate vs delete)
EN

Stack Overflow用户
提问于 2009-11-21 04:15:55
回答 6查看 9.1K关注 0票数 9

我们有一个包含150+百万条记录的表。我们需要清除/删除所有行。删除操作将永远花费时间,因为它将写入t-logs,并且我们无法更改整个数据库的恢复模式。我们已经测试了truncate table选项。

我们意识到truncate会从表中释放页面,如果我没弄错的话,可以重用这些页面,但不会自动收缩数据库。因此,如果我们想要减小DB大小,我们真的需要在截断表之后运行shrink db命令。

这是正常的程序吗?有什么我们需要小心或注意的吗,或者有没有更好的选择?

EN

回答 6

Stack Overflow用户

发布于 2009-11-21 04:19:14

“删除所有行”...删除表(并使用相同的模式/索引重新创建一个空的表)不是更可取吗?(我个人喜欢“重新开始”;-)

这个截断表也很好,是的,如果你想恢复空间,之后可能需要DBCC SHRINKFILE。

票数 1
EN

Stack Overflow用户

发布于 2009-11-21 04:24:17

truncate就是你要找的东西。如果之后你需要瘦身,那就去做个心理医生。

这个MSDN refernce (如果您正在谈论T-SQL)在幕后比较删除行和截断。

票数 1
EN

Stack Overflow用户

发布于 2009-11-21 04:24:01

对于Truncate table (以及drop table)需要记住的一件事是,如果您有引用该表的外键,这将不起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1772984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档