首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改表Oracle11gr2的物理结构

更改表Oracle11gr2的物理结构
EN

Stack Overflow用户
提问于 2013-01-10 14:18:17
回答 2查看 138关注 0票数 2

我有一张桌子

代码语言:javascript
复制
Name              Age                    RollNo.
A                  1                      10
B                  2                      20

现在我想永久地修改这个表,在修改它之后,应该如下所示

代码语言:javascript
复制
RollNo.           Name                    Age
10                 A                      1
20                 B                      2

我该如何改变这个表,我只想改变这个表的物理结构。

EN

回答 2

Stack Overflow用户

发布于 2013-01-11 19:23:38

为什么你想做这件事?

如果只是因为您希望在使用SELECT *时有一个正确的列顺序,那么从一开始就不应该使用*。在查询中始终使用精确的列列表。

如果是因为你认为它会提高性能,你做过实际的测量吗?我怀疑您会发现更改物理列顺序会对性能产生重大影响的场景很多。在某些情况下,可以使用链接行(请参阅this article中的“行链接”部分),但这不适用于像您这样的窄行。

话虽如此,您可以:

NEW_TABLE.

  • DROP TABLE OLD_TABLE.

  • ALTER TABLE NEW_TABLE RENAME TO OLD_TABLE.

  • CREATE TABLE NEW_TABLE AS SELECT <different column order> FROM OLD_TABLE.
  • Recreate所有相关的约束(如键、FK)、索引和触发器/过程

如果在接受更新时需要这样做,您可能还需要查看dbms_redefinition

票数 3
EN

Stack Overflow用户

发布于 2013-01-10 14:42:16

您可以删除和创建表,而不会丢失oracle using语句中的数据。

代码语言:javascript
复制
create table YOUR_TABLE_BU as select * from YOUR_TABLE

请通过link - How can I create a copy of an Oracle table without copying the data?了解更多详细信息。尝试:

代码语言:javascript
复制
CREATE TABLE YOUR_TABLE_BU AS SELECT * FROM YOUR_TABLE;

DROP TABLE YOUR_TABLE;

CREATE TABLE YOUR_TABLE AS SELECT RollNo., Name, Age FROM YOUR_TABLE_BU;

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

https://stackoverflow.com/questions/14251904

复制
相关文章

相似问题

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