删除列或使用所需列重新创建 table:哪个更好?
drop column or re-create table using required column : which is better?
我需要从 table 中删除大约 200 列(未编入索引)。 table 包含大量记录(大约 300 万条)。我尝试了两种不同的方法来删除这些列:
- 使用 "alter table drop column ..." 语句单独删除了该列。
例如:ALTER TABLE AO_PO_DTL_SCHEDULE_BKP1 DROP (shipto_jurisdiction_code,mark_po_box,..);
或者
更改 TABLE AO_PO_DTL_SCHEDULE_BKP4 设置未使用 (shipto_jurisdiction_code,mark_po_box,...)
更改 TABLE AO_PO_DTL_SCHEDULE_BKP4 删除未使用的列;
- 使用所需的列重新创建了 table,并从原始 table 中导入了记录。
但是,这两种方法都需要很长时间才能完成(大约 30 min/table),而且我们有大约 10 table 秒的时间在生产环境停机后 4 小时内完成此操作 activity .
我想知道是否有任何不同的方法可以用来删除这些列,或者如果以上两种是唯一的方法,那么 从 [=37] 中删除这些列的最佳方法是什么=]:
删除后我们有任何命令来重新组织 table 结构吗?
我正在使用甲骨文 11g。感谢您的帮助。
最好从特定 table 的所需列创建 table,如下所示
create table sample_cpy
as
select sno,name,dept from sample;
如果您只想要 table 结构,请使用如下
create table sample_cpy
as
select sno,name,dept from sample where rownum < 1;
以上这些方法不会创建任何 index,primary,foriegn key etc
.
如果一切正常,那么您可以 delete
来源 table。
我需要从 table 中删除大约 200 列(未编入索引)。 table 包含大量记录(大约 300 万条)。我尝试了两种不同的方法来删除这些列:
- 使用 "alter table drop column ..." 语句单独删除了该列。 例如:ALTER TABLE AO_PO_DTL_SCHEDULE_BKP1 DROP (shipto_jurisdiction_code,mark_po_box,..); 或者 更改 TABLE AO_PO_DTL_SCHEDULE_BKP4 设置未使用 (shipto_jurisdiction_code,mark_po_box,...) 更改 TABLE AO_PO_DTL_SCHEDULE_BKP4 删除未使用的列;
- 使用所需的列重新创建了 table,并从原始 table 中导入了记录。
但是,这两种方法都需要很长时间才能完成(大约 30 min/table),而且我们有大约 10 table 秒的时间在生产环境停机后 4 小时内完成此操作 activity .
我想知道是否有任何不同的方法可以用来删除这些列,或者如果以上两种是唯一的方法,那么 从 [=37] 中删除这些列的最佳方法是什么=]:
删除后我们有任何命令来重新组织 table 结构吗? 我正在使用甲骨文 11g。感谢您的帮助。
最好从特定 table 的所需列创建 table,如下所示
create table sample_cpy
as
select sno,name,dept from sample;
如果您只想要 table 结构,请使用如下
create table sample_cpy
as
select sno,name,dept from sample where rownum < 1;
以上这些方法不会创建任何 index,primary,foriegn key etc
.
如果一切正常,那么您可以 delete
来源 table。