删除列或使用所需列重新创建 table:哪个更好?

drop column or re-create table using required column : which is better?

我需要从 table 中删除大约 200 列(未编入索引)。 table 包含大量记录(大约 300 万条)。我尝试了两种不同的方法来删除这些列:

  1. 使用 "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 删除未使用的列;
  2. 使用所需的列重新创建了 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。