我已经看到2种方法来更改主键。该方法如图1所示,一些是在我删除的主键(它删除对应的索引为好),然后与在它即更改主键
alter table TABLE_NAME drop constraint PK_TABLE_NAME drop index;
alter table TABLE_NAME
add constraint PK_TABLE_NAME PRIMARY KEY ("COL1")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "USERS" ENABLE;
COMMIT;
/
第二种方法是做的所有步骤indiviually创建一个新的索引中的主键即
alter table TABLE_NAME drop constraint PK_TABLE_NAME;
drop index PK_TABLE_NAME;
CREATE UNIQUE INDEX PK_TABLE_NAME ON TABLE_NAME
(COL1)
LOGGING
TABLESPACE USERS
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT
)
NOPARALLEL;
alter table TABLE_NAME add constraint PK_TABLE_NAME PRIMARY KEY ("COL1") USING INDEX PK_TABLE_NAME;
COMMIT;
/
所以现在我的问题是
- 在这些2种方法已经除了事实步骤分裂任何东西在后端有什么不同?
- 我看到我们可以提及列名即时引号,即“COL1”或不带引号,即COL1。这两种方法会有什么不同吗?
- 考虑这些步骤正在一个具有TRILLION OF DATA的表上执行,这些任何一个在其他上都有什么性能增益?
我喜欢在使用第二种方法创建索引时使用“并行”。 – pahariayogi