我有一些表用来创建我的一些报告,现在不需要它们了。有人建议使用truncate来清除,说是这样会比较快速。我想知道trucate和drop的区别是什么?
drop table -> 删除表,操作会被写入到数据库日志中 truncate table ->删除表中数据,操作不会写入到日志中,执行速度快,如果表中有identity的字段,那么执行truncate table后,identity从默认值开始累计
从一个表中删除数据,日志会记录删除过程以及触发删除的触发器。而使用truncate不会有删除每行的日志。SQL Server对于含有外键的表默认是不允许使用truncate进行清空的,因为这样需要检查每行记录的外键。
truncate通常用来需要快速、有目的地清空一个临时表。它仍然会保持表的结构以供未来使用。如果你确定要删除数据并且不想保留,可以直接使用drop table来把表结构和数据一起删除。
MSDN有文章做详细的说明。
您正在浏览的问题含有以下标签:
sql × 3 sqlserver × 2
提问时间: 1 year, 6 months前
目前浏览数量:1,189 次
最后更新时间:1 year, 5 months前
SQL中drop table和truncate table的区别是什么?
什么时候应该用存储过程?
分享两本SQL语言参考书
SQL Server中如何查看历史操作记录?