table的table属性为什么不显示(DROPTABLETRUNCATE)

相同点TRUNCATE TABLE和DELETE都可以删除整个数据库表的记录,今天小编就来聊一聊关于table的table属性为什么不显示?接下来我们就一起去研究一下吧!

table的table属性为什么不显示(DROPTABLETRUNCATE)

table的table属性为什么不显示

相同点

TRUNCATE TABLE和DELETE都可以删除整个数据库表的记录

不同点

  1. DELETE
  2. DML语言
  3. 可以回退
  4. 可以有条件的删除
  5. DELETE FROM 表名 WHERE 条件
  6. TRUNCATE TABLE
  7. DDL语言
  8. 无法回退
  9. 默认所有的表内容都删除
  10. 删除速度比delete快
  11. TRUNCATE TABLE 表名
  12. DROP TABLE
  13. 用于删除表(表的结构、属性以及索引也会被删除);
  14. DROP TABLE 表名

原理

DDL(Data Definition Language)数据定义语言,DML(Data Manipulation Language)数据操作语言。

  • TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令Delete将被撤销,而TRUNCATE则不会被撤销。
  • TRUNCATE是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。
  • TRUNCATE将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过TRUNCATE操作后的表比Delete操作后的表要快得多。
  • TRUNCATE不能触发任何Delete触发器。
  • 当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。
  • 不能清空父表。

优化

在数据库里,使用delete删除数据以后,数据库的存储容量不会减少,而且使用delete删除某个表的数据以后,查询这张表的速度和删除之前一样,不会发生变化。

因为数据库有一个HWM高水位,它是oracle的一个表使用空间最高水位线。当插入了数据以后,高水位线就会上涨,但是如果你采用delete语句删除数据的话,数据虽然被删除了,但是高水位线却没有降低,还是你刚才删除数据以前那么高的水位。除非使用truncate删除数据。那么,这条高水位线在日常的增删操作中只会上涨,不会下跌,所以数据库容量也只会上升,不会下降。而使用select语句查询数据时,数据库会扫描高水位线以下的数据块,因为高水位线没有变化,所以扫描的时间不会减少,所以才会出现使用delete删除数据以后,查询的速度还是和delete以前一样。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页