Truncate

语法

TRUNCATE TABLE
    [ { database_name .[ schema_name ] . | schema_name . } ]
    table_name
[ ; ] Truncate Table TableName

与 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 不能激活触发器,因为该操作不记录各个行删除。

截断大型表

Microsoft SQL Server 能够删除或截断超过 128 个区的表,而无需同时持有要删除的所有区的锁。

MSDN 地址:http://msdn.microsoft.com/zh-cn/library/ms177570.aspx

sql Truncate 与 delete的区别的更多相关文章

  1. SQL truncate 、delete与drop区别

    SQL truncate .delete与drop区别 相同点: 1.truncate和不带where子句的delete.以及drop都会删除表内的数据. 2.drop.truncate都是DDL语句 ...

  2. SQL删除语句DROP、TRUNCATE、 DELETE 的区别

    主要介绍了SQL删除语句DROP.TRUNCATE. DELETE 的区别,帮助大家更好的理解和学习sql语句,感兴趣的朋友可以了解下 DROP: 1 DROP TABLE test; 删除表test ...

  3. MySQL数据库 crud语句 ifnull() 创建新账户 备份数据库 一对多关系 多对多(中间表) 外键约束 自关联 子查询注意事项 DML DDL DQL mysql面试题 truncate与delete的区别

    DML(data manipulation language): 它们是SELECT.UPDATE.INSERT.DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言 DDL ...

  4. 数据库中truncate与delete的区别与联系

    昨天被问到truncate与delete的区别,truncate没用过,回去百度了一下,才知道还有这个一种语句. truncate table命令将快速删除数据表中的所有记录(保留数据表结构).这种快 ...

  5. drop、truncate和delete的区别 [转载]

    drop.truncate和delete的区别 本文转载自: https://www.cnblogs.com/zhizhao/p/7825469.html     (1)DELETE语句执行删除的过程 ...

  6. mysql中 drop、truncate和delete的区别

    mysql中drop.truncate和delete的区别 (1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作. TRUNC ...

  7. mysql之drop、truncate和delete的区别

    今天在整理mysql数据库笔记的时候突然想到一个问题,就是drop.truncate和delete的区别,乍一看三者都是有删除的功能,但是具体来看还是有很多区别的.我先把这三个的作用简单说一下,有前辈 ...

  8. sql server 中删除表中数据truncate和delete的区别(转载自.net学习网)

    我们都知道truncate table可以用来删除整个表的内容,它与delete后面不跟where条件的效果是一样.但除此之外,我们还清楚它们之间有其它的区别吗?本章我们将一起讨论truncate与d ...

  9. SQL 删除的三个语句:DROP、TRUNCATE、 DELETE 的区别

    转载:http://www.runoob.com/sql/sql-delete.html DROP: DROP test; 删除表test,并释放空间,将test删除的一干二净. TRUNCATE: ...

随机推荐

  1. 以优美方式编写JavaScript代码

    英文原文:CoffeeScript: The beautiful way to write JavaScript 我用 JavaScript 编程很多年了,写了大量的 JavaScript 代码,即便 ...

  2. 財哥面京东dm的经历【帮財哥发的】

        关于面京东,感触仅仅有一个,虐的快吐血了.首先说京东分四个板块,有京东商城.京东金融.京东刚收购的拍拍和海外事业部.我这个职位主要是在金融部数据组做数据挖掘和机器学习,还有推荐系统.面试是在周 ...

  3. 【转】Delphi多线程学习(9):多线程数据库查询(ADO)

    原文:http://www.cnblogs.com/djcsch2001/articles/2382559.html ADO多线程数据库查询通常会出现3个问题: 1.CoInitialize 没有调用 ...

  4. oc-24-点语法

    /** 点语法的本质是方法的调用,而不是访问成员变量,当使用点语法时, 编译器会自动展开成相应的方法.切记点语法的本质是转换成相应的set和get方法, 如果没有set和get方法,则不能使用点语法. ...

  5. mysqldump中master-data和dump-slave的区别

      [mysql@db2 ~]$ mysqldump -A --master-data=2 > master2.sql [mysql@db2 ~]$ mysqldump -A --dump-sl ...

  6. NopCmmerce的FakeHttpContext类

    在 Web 中进行测试驱动的开发,比较大的困难是模拟 HttpContext; 1.Nop提供了完整的FakeHttpContext实现,如图 1.FakeHttpContext的作用. 控制器进行单 ...

  7. 5个基于css3超炫的鼠标滑动按钮动画

    今天给大家分享5个基于css3超炫的鼠标滑动按钮动画.这5个按钮鼠标经过的时候有超炫的动画效果.这5个按钮适用浏览器:360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之 ...

  8. JS 公共方法

    1.Format函数 $.GM.Format = function (source, params) { if (arguments.length == 1) return function () { ...

  9. BootStrap2学习日记18---提示消息

    代码: <div class="alert alert-block" id="alert"> <a href="#" cl ...

  10. A Simple Problem with Integers 多树状数组分割,区间修改,单点求职。 hdu 4267

    A Simple Problem with Integers Time Limit: 5000/1500 MS (Java/Others)    Memory Limit: 32768/32768 K ...