我应该在I DROP TABLE之前TRUNCATE TABLE以避免记录开销吗?

Jus*_*sel 9 sql sql-server sql-server-2008

我知道使用TRUNCATE是一个最小化记录操作,并且在DROP记录删除操作时不记录每条记录的删除.

那么,假设如果我想摆脱一个相对较大的表并且我希望这种情况发生得如此迅速并且尽可能小的记录开销我应该TRUNCATE TABLE在我之前DROP TABLE吗?这样RECOVERY SIMPLE做有什么不同吗?

我应该注意到,这需要以自动方式(在预编写的脚本中)发生,因为这将部署到客户端数据库,其中停机时间和日志文件增长都可能成为问题.

Aar*_*and 10

虽然TRUNCATE不记录单个行,但它会记录页面/范围.这就是你可以回滚截断的原因(很多人都不知道).我的猜测是,如果你只是截断然后下降它实际上会慢于它自己的下降.如果您介入之间,可能不是,但它还取决于日志活动,恢复模型,当您点击检查点等.

为什么这里的速度很重要?如果您要放弃它,用户不会使用该表...

你为什么不测试它?除非有人对此进行了广泛的研究,涵盖了几个不同的变量,否则我怀疑你会得到比准教育猜测更多的东西.