2

我有一张很棒的桌子,有超过 2.000.000.000 行。因此我想在 column1 上创建一个索引:

CREATE INDEX "SCHEMA"."INDEX_TABLE1" ON "SCHEMA"."TABLE1" ("STR1") 
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS NOCOMPRESS LOGGING
STORAGE( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS" ;

如果我执行此操作,我的临时表空间将被使用,如果它已满(最大 20gb),则创建将被中止。

创建索引我的错在哪里?

4

1 回答 1

2

来自 Oracle 文档:

创建大索引

创建超大索引时,请考虑使用以下过程为索引创建分配更大的临时表空间:

使用 CREATE TABLESPACE 或 CREATE TEMPORARY TABLESPACE 语句创建一个新的临时表空间。

使用 ALTER USER 语句的 TEMPORARY TABLESPACE 选项将此作为您的新临时表空间。

使用 CREATE INDEX 语句创建索引。

使用 DROP TABLESPACE 语句删除此表空间。然后使用 ALTER USER 语句将临时表空间重置为原始临时表空间。

使用此过程可以避免将您通常共享的临时表空间扩展到可能影响未来性能的不合理的大大小的问题。

于 2013-07-19T08:41:32.573 回答