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