AD

TRUNCATE 快速删除表中的所有数据

删除表中的所有行,而不记录单个行删除操作。TRUNCATE TABLE 在功能上与没有 WHERE 子句的 DELETE 语句相同;但是,TRUNCATE TABLE 速度更快,使用的系统资源和事务日志资源更少。

备注

与 DELETE 语句相比,TRUNCATE TABLE 具有以下优点:

所用的事务日志空间较少。

DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一个条目。TRUNCATE TABLE 通过释放用于存储表数据的数据页来删除数据,并且在事务日志中只记录页释放。

使用的锁通常较少。

当使用行锁执行 DELETE 语句时,将锁定表中各行以便删除。TRUNCATE TABLE 始终锁定表和页,而不是锁定各行。

表中将毫无例外地不留下任何页。

执行 DELETE 语句后,表仍会包含空页。例如,必须至少使用一个排他 (LCK_M_X) 表锁,才能释放堆中的空表。如果执行删除操作时没有使用表锁,表(堆)中将包含许多空页。对于索引,删除操作会留下一些空页,尽管这些页会通过后台清除进程迅速释放。

TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。若要删除表定义及其数据,请使用 DROP TABLE 语句。

如果表包含标识列,该列的计数器重置为该列定义的种子值。如果未定义种子,则使用默认值 1。若要保留标识计数器,请使用 DELETE。

限制

不能对以下表使用 TRUNCATE TABLE:
由 FOREIGN KEY 约束引用的表。
参与索引视图的表。

通过使用事务复制或合并复制发布的表。

对于具有以上一个或多个特征的表,请使用 DELETE 语句。

TRUNCATE TABLE 不能激活触发器,因为该操作不记录各个行删除。有关详细信息,请参阅 CREATE TRIGGER (Transact-SQL)。

标签: truncate, 删除数据
分类: MsSql
时间: 2013-11-21

相关文章

  1. MYSQL删除表中的指定ID数据

    有些时候我们需要删除表中指定ID数据,主要是接下模糊删除,需要的朋友可以参考下 删除A表中的ID 中的开头以B* 的数据库. delete FROM A WHERE id like 'B%' 单独删除 A 表中的ID B ...
  2. Oracle 查找与删除表中重复记录的步骤方法

    案例:一个应用表中的一个字段是主键,向表中插入数据时,先把数据放在临时表中(没有主键)然后再插入应用表. 这时候如果临时表中有重复数据,无论是主键字段businessid有重复,还是一整行有重复都会报出违反唯一主键约束错 ...
  3. Oracle中删除表,删除表中的数据以及恢复数据

    Oracle中删除表,删除数据以及恢复数据 1.删除表中数据两种方法 a. delete * from My_Table; b. truncate table My_Table; 2.删除整个表 drop table M ...
  4. 用shell脚本在mysql表中批量插入数据的方法

    这篇文章主要介绍了用shell脚本在mysql表中批量插入数据的方法,需要的朋友可以参考下 很多时候需要在mysql表中插入大量测试数据,下面分享一个用shell脚本通过while循环批量生成mysql测试数据的方法,你 ...
  5. 从MySQL数据库表中取出随机数据的代码

    这个例子是用于一个简单的应用开发了,意思就是把现在表中的所有数据我们随机读出来一次之后再进行随机保存到另一个表,从而达到了记录随机的功能 MySQL 如何从表中取出随机数据 以前在群里讨论过这个问题,比较的有意思.mys ...
  6. Oracle中如何删除表中重复数据

    我们可能会出现这种情况,某个表原来设计不周全,导致表里面的数据重复,那么,如何对重复的数据进行删除呢? 重复的数据可能有这样两种情况,第一种是表中只有某些字段一样,第二种是两行记录完全一样. 一.对于部分字段重复数据的删 ...
  7. mysql删除表中某一字段重复的记录

    一般大家也许会碰到这个问题,大家可以参考下,讲的比较详细 比如,表:event(id int(10) auto_increment primary key, sid int(10)not null, detail tex ...
  8. 去除表中重复的数据

    表数据如下: 查询表中重复的数据: SELECT * FROM t_class WHERE classname IN (SELECT classname FROM t_class GROUP BY classname H ...
  9. mysql 快速清除表中所有数据

    Truncate Table tablename
  10. mysql存储过程--往表中批量插入数据

    1.创建表: create test_a( id int); 2.创建存储过程 delimiter $$ create procedure batch_insert() begin DECLARE max int; DE ...
  11. 删除表数据之delete和truncate

    开始比较... 一.truncate 1.基本用法 语法:truncate table 'table1' 作用:是要截断的表的名称或要删除其全部行的表的名称. 2.与delete区别 truncate table在功能上 ...
  12. MySQL删除表数据:DELETE 与 TRUNCATE 的区别

    在MySQL中有两种方法可以删除数据,一种是DELETE语句,另一种是TRUNCATE TABLE语句.DELETE语句可以通过WHERE对要删除的记录进行选择.而使用TRUNCATE TABLE将删除表中的所有记录.因 ...
  13. SQL删除重复数据方法(一个贴吧,要求删除一个表中的重复帖)

    例如: id name value 1 a pp 2 a pp 3 b iii 4 b pp 5 b pp 6 c pp 7 c pp 8 c iii id是主键 要求得到这样的结果 id name value 1 a ...
  14. Sql Server中清空所有数据表中的记录

    我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入死循环,二是这里使用了微软未正式公开的sp_MSForEachTable存储过程 Sql Server中清空所有数据表中的记录 清空所 ...
  15. 浅析删除表的几种方法(delete.drop.truncate)

    这篇文章主要介绍了删除表的几种方法,需要的朋友可以参考下 delete from 表名: 删除所有记录,表结构还在,写日志,可以恢复的,速度慢 drop talbe 表名: 删除表的结构和数据 truncate talb ...
  16. MySQL 删除数据库中重复数据方法小结

    在实际项目中,我们经常会遇到删除数据库中重复数据的问题,貌似是很简单的问题哈,下面我们来探讨下 刚开始,根据我的想法,这个很简单嘛,上sql语句 delete from zqzrdp where tel in (sele ...
  17. 判断字段是否被更新 新旧数据写入Audit Log表中

    客户要求,要对一个敏感数据表进行Audit跟踪.如果记录被更新时,要把旧新保存起来,是谁更改了记录,什么时候更新的等相关信息.还有一个主要问题就是客户不确定具体要跟踪那个字段,希望自己决定 Insus.NET解决这个问题 ...
  18. 删除SQL Server2000数据库表中重复记录

    最近由于要给旧系统的表中增加主键(SQL Server2000的表),由于旧表中存在重复记录所以导致增加不上,所以需要写一段SQL语句来删除所有的重复记录(就是必须保留重复记录中的一条,维持数据记录的唯一性),我知道园子 ...
  19. MySQL 创建,修改和删除表

    登录数据库系统: mysql –h localhost –u root –p 其中,"-h"参数指连接的主机名,因此此处是连接本机,所以后面的内容为localhost: "-u"参 ...