【发布时间】:2013-05-27 12:31:41
【问题描述】:
我有一张很棒的桌子,有超过 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),则创建将被中止。
我创建索引的错在哪里?
【问题讨论】:
-
您是否考虑过对该表进行分区?这样,当您用作分区键的列位于 where 子句中时,您将立即受益于分区修剪。此外,您可以使用本地索引,当与分区修剪结合使用时,这些索引将使用更少的空间并且速度更快。
-
增加临时表空间可能是您唯一的选择。对大量数据进行排序需要大量磁盘空间。一种可能的例外情况是,如果表刚刚加载,并且您知道数据已经有序,则可以使用
NOSORT选项创建索引。 -
感谢您的回答。我以后会试试的
标签: oracle oracle11g database-indexes tablespace