首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle中的截断命令如何能够在删除表后检索表的结构?

Oracle中的截断命令如何能够在删除表后检索表的结构?
EN

Stack Overflow用户
提问于 2011-11-05 04:12:25
回答 2查看 1.4K关注 0票数 1

Oracle中的SQL命令截断比DELETE FROM table;更快,因为TRUNATE首先将指定的表完全删除,然后创建一个具有相同结构的新表(可能需要澄清,以防我是错误的)。由于截断是DDL的一部分,所以它在执行之前和完成执行之后隐式地发出COMMIT。如果是这种情况,那么由于数据字典中的整个结构,截断命令删除的表将永久丢失。在这种情况下,截断命令如何能够先删除表,然后用相同的结构重新创建相同的表?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-05 21:14:37

我认为截断(大量其他东西)只是简单地重置高水标志。

请参阅:http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/statements_10007.htm#SQLRF01707

然而,在http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:2816964500346433991

很明显,数据段在截断后会发生变化。

票数 5
EN

Stack Overflow用户

发布于 2011-11-05 04:23:06

(请注意,我在Sybase工程中为Sybase工作,我的回答来自我对truncate是如何在那里实现的知识,但我认为在Oracle中也是类似的。)

我不相信这个表实际上是被丢弃和重新创建的;内容只是被丢弃。这比delete from <table>要快得多,因为不需要执行任何触发器,而不是每次删除一行(从表和索引中删除),服务器可以简单地丢弃包含该表和任何索引的行的所有页面。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8018137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档