mssql sqlserver truncate table 关键字的原理分享


摘要:
下文讲述truncate table 关键字的原理,如下所示:
实验环境:sql server 2008 R2



truncate 关键字简介

truncate 关键字功能:truncate关键字是删除数据表中所有内容的sql脚本。

  ---truncate table 用法如下:
 truncate table [表名]

truncate table 删除表内容的速度非常快,效率非常高,在功能上truncate table同不带where 条件的delete语句功能相同,
二者都是删除表中全部行,
————————————————
truncate table 同delete关键字对比
1. truncate table 比delete 速度快,truncate 占用少量的事务日志
2. 由于truncate table 产生较少的事务日志,所以此操作需谨慎,一旦出错,将不可逆转
3. truncate table将会重置标识列
4.对于存在“外键”的表,无法使用truncate table操作
5.truncate table无法产生日志,所以此操作不会触发delete触发器
————————————————

truncate table 删除数据的原理:
truncate table 删除数据的原因,是将数据表中数据所对应的数据页信息关联释放掉,并且事务日志中只记载页释放的信息

举例说明

 create table [maomao]
(keyId int identity,
 info varchar(30))
 go
 
 insert into [maomao]
 (info)values(N'sql教程'),
 ('sqlblog'),(N'sql爱好者')
 go
 
 

---表所在页查看
DBCC IND('test',maomao,-1)
go

truncate table maomao
go
---表所在页查看
DBCC IND('test',maomao,-1)
go

drop table maomao