我已經看到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