我有一张桌子

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上重新创建所有相关的约束(如键、fks)、索引和触发器/过程。
DROP TABLE OLD_TABLE
ALTER TABLE NEW_TABLE RENAME TO OLD_TABLE
如果您在接受更新时需要查看dbms_redefinition,也可以查看。

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

10-13 06:33