我可以在oracle中重新排序列位置吗?
如果是,那么我该怎么做呢?
i'm also try this
ALTER TABLE PANEL ADD ID NUMBER GENERATED BY DEFAULT AS IDENTITY FIRST;
如果您希望重新排序列,因为它们按顺序存储在块中,并且在执行SELECT *
时出现,则必须重新创建表。
- 创建一个新表并将数据从旧表插入到新表中(使用
CREATE TABLE AS SELECT
一步完成) - 添加任何索引/约束/授权
- 删除旧表
- 将新表重命名为旧表名
但是在大多数情况下,实际上不需要这样做,因为物理列顺序和查询的表示顺序是不相关的。它只对SELECT *
或INSERT VALUES
有影响,而不指定列列表,这两种都不是好的编程实践。[我想如果你确实有一个超过255列的表(坏主意),你可以将访问最多的列放在前255列,并将很少访问的列推到后面的位置,以减少行链读取的数量,但更好的解决方案是将表分解并始终保持在255列以下]