SQL Server中truncate、delete和drop的异同点ITeye - 凯发娱乐

SQL Server中truncate、delete和drop的异同点ITeye

2019年02月23日08时20分08秒 | 作者: 醉波 | 标签: 数据,句子,业务 | 浏览: 1036


相同点:

truncate和不带where子句的delete,以及drop都会删去表内的数据

不同点:

1. truncate和delete只删去数据不删去表的结构(界说)

drop句子将删去表的结构被依靠的束缚(constrain)、触发器(trigger)、索引(index);依靠于该表的存储进程/函数将保存,可是变为 invalid 状况。

2. delete句子是数据库操作言语(dml),这个操作会放到rollback segement中,业务提交之后才收效;假如有相应的trigger,履行的时分将被触发。

truncate、drop是数据库界说言语(ddl),操作当即收效,原数据不放到rollback segment中,不能回滚,操作不触发trigger。

3.delete句子不影响表所占用的extent,高水线(high watermark)坚持原方位不动。

明显drop句子将表所占用的空间悉数开释。

truncate句子缺省情况下见空间开释到minextents个extent,除非运用reuse storage;truncate 会将高水线复位(回到最开端)。

4.速度,一般来说: drop truncate delete

5.安全性:当心运用 drop和truncate,特别没有备份的时分.不然哭都来不及。

运用上,想删去部分数据行用delete,留意带上where子句. 回滚段要足够大.

想删去表,当然用drop

想保存表而将一切数据删去,假如和业务无关,用truncate即可。假如和业务有关,或许想触发trigger,仍是用delete。

假如是整理表内部的碎片,可以用truncate跟上reuse stroage,再从头导入/刺进数据。

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表凯发娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章