标签归档:truncate原理

mssql sqlserver truncate table关键字原理详解


摘要:
下文讲述sqlserver 中truncate drop关键字的用法区别
实验环境:sql server 2008 R2



truncate table关键字简介

truncate table 功能说明:
删除数据表内容的方法。

truncate table 语法说明:

   truncate table tableName

—-参数说明:
tableName:待删除数据表内容的表名

truncate table关键字运行原理:

由于truncate table表名,后不能跟where delete关键字,只能对全表进行数据删除操作,
truncate table关键字不产生日志,直接释放数据表数据页上的信息,所以运行效率非常高,速度非常快。
delete关键字,每删除一条语句都会产生相应的日志信息,
truncate table 关键字运行,只会删除数据表中的数据信息,不会对表结构、约束、索引信息等产生影响。
truncate table 无法激活表的触发器。

注意事项:
truncate table 不会产生日志信息,
truncate table 关键字运行后,不会进行回滚操作
有FOREIGN KEY 约束引用的表,无法运行 TRUNCATE TABLE命令
  

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