TRUNCATE TABLE 在sql server数据库中快速删除记录,清空表

转载 2013年12月03日 14:49:05

在sql server数据库中快速删除记录,清空表

TRUNCATE TABLE TableName


若要删除表中的所有行,则 TRUNCATE TABLE 语句是一种快速、无日志记录的方法。TRUNCATE TABLE 与不含有 WHERE 子句的 DELETE 语句在功能上相同。但是,TRUNCATE TABLE 速度更快,并且使用更少的系统资源和事务日志资源。

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

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

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

  • 使用的锁通常较少。

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

  • 如无例外,在表中不会留有任何页。

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

与 DELETE 语句相同,使用 TRUNCATE TABLE 清空的表的定义与其索引和其他关联对象一起保留在数据库中。

相关文章推荐

truncate表后,不释放表空间

问题起因: 同事从生产导出一个dmp,给新系统测试用。由于测试环境的表空间比较紧张。先用delete清空掉了部分表的数据, 发现表空间没有释放。接着又执行了truncate,但奇怪的是truncd...

SQL SERVER快速删除数据库表里面的记录,truncate与delete的对比 【转】

用BulkInsert向数据库里面的一个表里插入40W条数据,因为这个数据是实时更新的,所以每次都会先将表里面的数据全部删除,再将新来的数据插入进去,所以效率主要是在删除数据这儿。最开始我用的是del...

在sql server数据库中快速删除记录,清空表

若要删除表中的所有行,则 TRUNCATE TABLE 语句是一种快速、无日志记录的方法。TRUNCATE TABLE 与不含有 WHERE 子句的 DELETE 语句在功能上相同。但是,TRUNCA...

在sql server数据库中快速删除记录,清空表

若要删除表中的所有行,则 TRUNCATE TABLE 语句是一种快速、无日志记录的方法。TRUNCATE TABLE 与不含有 WHERE 子句的 DELETE 语句在功能上相同。但是,TRUNCA...
  • zscmj
  • zscmj
  • 2011年09月13日 16:08
  • 2286

收缩、清空和删除SQL Server数据库文件及日志文件

网上搜集了一些关于如何收缩、清空和删除SQL Server 数据库文件及日志文件的方法。这样可以保证在不影响数据库系统正确工作的前提下又节省了服务器的磁盘空间。...

SQL Server中收缩、清空和删除数据库文件及日志文件

一、简单方法 –SQL Server收缩方法 1、右键数据库→属性→选项→故障还原模型→设为简单→确定; 2、右键数据库→所有任务→收缩数据库→确定; 3、右键数据库→属性→选项→故障还...
  • wlming6
  • wlming6
  • 2015年06月15日 11:29
  • 6389

SQL Server数据库的存储过程中定义的临时表,真的有必要显式删除(drop table #tableName)吗?

问题背景 在写SQL Server存储过程中,如果存储过程中定义了临时表, 有些人习惯在存储过程结束的时候一个一个显式地删除过程中定义的临时表(drop table #tName),有些人又没...

sql使用truncate和delete清空table的区别(总结)

1.truncate在各种表上无论是大的还是小的都非常快。如果有rollback命令,delete 将会被撤销,而truncate不会被撤销。...

ms sql server 2005数据库日志文件过大,需要清除或者清空

数据库:ms sql server 2005 任务:ms sql server 2005数据库日志文件过大,需要清除。 方法: backup log [你的数据库名称] WITH N...
  • joyhpo
  • joyhpo
  • 2012年09月12日 15:48
  • 230

Sql Server中清空所有数据表中的记录

如果要删除数据表中所有数据只要遍历一下数据库再删除就可以了,清除所有数据我们可以使用搜索出所有表名,构造为一条SQL语句进行清除了,这里我一一给各位同学介绍。 使用sql...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TRUNCATE TABLE 在sql server数据库中快速删除记录,清空表
举报原因:
原因补充:

(最多只允许输入30个字)