博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Delete和Truncate的区别
阅读量:7063 次
发布时间:2019-06-28

本文共 532 字,大约阅读时间需要 1 分钟。

1、  Truncate比Delete所用的事务日志空间更少:

DELETE 是一行一行操作,并且把记录都存进日志文件(说明一下,无论任何恢复模式,都会记录日志)。而TRUNCATE操作,是对一个页操作,在日志中,仅仅记录释放页面的这个动作,而不记录每一行。

2、  Truncate比Delete使用锁通常较少:

DELETE由于是一行一行删除,所以需要对处理的行进行加锁,而且是行锁。TRUNCATE操作由于是对页操作,所以只需要申请页锁或者表锁。

3、  TRUNCATE对表中的所有页都清空:

执行DELETE后,表还是会有空页,但是TRUNCATE则会全部清除。但是TRUNCATE会保留表结构、列、约束、索引等。而DELETE之后,会哦他能够过后台清除空页。

 

为了更好地删除空间,可以使用以下方法:

(1)、在表中创建聚集索引

(2)、如果所有数据已经不要,那使用TRUNCATE 而不是DELETE,删除后DROP TABLE 。

 

另外,对于由于DELETE操作而留下的空间,会在插入时重用。如果觉得这些空间存在不好,那么可以重建/创建聚集索引来释放空间。

转载于:https://www.cnblogs.com/wajika/p/6718518.html

你可能感兴趣的文章
解决Eclipse报errors running builder ‘javascript validator’ on project
查看>>
[Nuget]使用Nuget管理工具包
查看>>
【转】Spring Framework灰度发布
查看>>
Android自定义view双缓存技术
查看>>
支持 Windows 10 最新 PerMonitorV2 特性的 WPF 多屏高 DPI 应用开发
查看>>
linux查看硬件信息及驱动设备相关整理
查看>>
REST与SOA两种架构下WCF的异同比较(含源码)
查看>>
遇事处理方式
查看>>
五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)
查看>>
linux 如何查看服务和端口
查看>>
Linux中如何让进程(或正在运行的程序)到后台运行?[zz]
查看>>
ZendGuardLoader安装
查看>>
floyd算法&迪杰斯特拉算法
查看>>
[CareerCup] 17.8 Contiguous Sequence with Largest Sum 连续子序列之和最大
查看>>
加入强调语气,使用<strong>和<em>标签
查看>>
How Spring Boot Autoconfiguration Magic Works--转
查看>>
Android 最简单的SD卡文件遍历程序
查看>>
[转] 32位 PL/SQL Develope r如何连接64位的Oracle 图解
查看>>
ArcGIS Engine开发之旅03--ArcGIS Engine中的控件
查看>>
sparkR 跑通的函数
查看>>