我有一张桌子
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/