要在一个业务繁忙的OLTP环境下对一个拥有上千万数据的大表创建索引,一个原则就是根据主机CPU的数量尽可能的让SQL进行并行处理(paralell),同时尽量少产生redo。在创建索引之前需要把sort_area_size排序区修改得大一点,如下:
SQL>alter session SET workarea_size_policy=manual; SQL>alter session SET sort_area_size=1024m;
并行执行SQL:(注意TEMP tablespace的大小,如果太小需要适当的加大)
1 2 | SQL>create UNIQUE INDEX index_name ON tablename(column_name) online nologging parallel 2 compute statistics; |
索引创建完成之后注意要取消并行:
SQL>alter INDEX index_name noparallel;
