SQLSERVER 快速清空数据表方法

在日常运维中我们常常会需要清空一些数据库的表数据,常规方法是使用DELETE语句

1
DELETE FROM [表名]

此方法的优点是可以根据条件删除数据(在表名后加where),但当需要全部清空一个表时使用此方法则会显得非常缓慢,因为DELETE是逐条删除的。
所以通常清空表时可以使用TRUNCATE TABLE来清空数据表

1
TRUNCATE TABLE [表名]

此方法无论数据库表有多少行数据都是秒删,其本质就是重建一个空表的意思。

当然有时候需要条件删除也可以使用此方法,即首先备份需要保留的数据到另一个临时表中,将本表清除后再将临时表的数据插入到本表中,方法如下

1
2
3
4
5
6
7
8
9
IF object_id('tempdb..#[临时表]') IS NOT NULL --确认是否已存在
BEGIN  
      DROP TABLE #temp_table --删除待用临时表
END

SELECT * INTO #临时表 FROM [本表] WHERE 条件 --创建临时表并拷贝数据
TRUNCATE TABLE [本表] --重建表
INSERT [本表] SELECT * FROM #临时表 --将临时表插入本表
DROP TABLE #临时表 --删除临时表

更多SQL操作技巧欢迎交流讨论,谢谢关注。

BeiTown
2013.08.02

本文链接:SQLSERVER 快速清空数据表方法

转载声明:BeiTown原创,转载请注明来源:BeiTown's Coder 编码之源,谢谢


Tags: , , , , ,

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>