sql - 更改表的物理结构 Oracle 11gr2

标签 sql database oracle database-design

我有一张 table

Name              Age                    RollNo.
A                  1                      10
B                  2                      20

现在我想以这样的方式永久更改表格,更改后应如下所示

RollNo.           Name                    Age
10                 A                      1
20                 B                      2

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

最佳答案

为什么你想这样做?

如果只是因为您希望在使用 SELECT * 时拥有正确的列顺序,那么你不应该使用 *首先。始终在查询中使用准确的列列表。

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


话虽如此,您可以:

  • CREATE TABLE NEW_TABLE AS SELECT <different column order> FROM OLD_TABLE .
  • NEW_TABLE 上重新创建所有相关约束(例如键、FK)、索引和触发器/过程.
  • DROP TABLE OLD_TABLE .
  • ALTER TABLE NEW_TABLE RENAME TO OLD_TABLE .

您可能还想查看 dbms_redefinition如果您需要在接受更新时执行此操作。

关于sql - 更改表的物理结构 Oracle 11gr2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14251904/

相关文章:

sql - 从 nodejs 连接 oracle

c# - 为什么此更新会锁定 Oracle 10 中的行?

尽管引用了 .dll,但找不到 C# 命名空间错误

oracle - 转换逗号分隔的 VARCHAR 以在 PL/SQL 的 IN 子句中使用?

mysql - JpaRepository计数查询QuerySyntaxException实体未映射

mysql - 即使数据类型相同,外键约束也会失败

database - 单个查询或多个查询

database - 外键字段可以与它在另一个表中引用的字段具有不同的名称吗?

mysql - 如何过滤列基础条件SQL

SQL Server 需要很长时间才能对几行执行更新查询