oracle中建索引可能大家都会,但是建索引是有几个选项参数却很少有人关注,在某些特殊环境下,可能会非常有用,下面一一说明:
1.NOSORT,记录排序可选项。
默认情况下,在表中创建索引的时候,会对表中的记录进行排序,排序成功后再创建索引。但是当记录比较多的是,这个排序作业会占用比较多的时间。
特殊情况下,我们就可以使用该参数加快建索引的速度。
例如:
create index idx_scm_salaud_bill_hdr_relid
on SCM_SALAUD_BILL_HDR (audrelateid) nosort ;
on SCM_SALAUD_BILL_HDR (audrelateid) nosort ;
2.online ,在线建索引
在生产环境中建索引时,经常碰到:“数据表处于busy状态,需要加nowait参数”的提示。
因为:默认情况下,数据库系统是不允许DML操作与创建索引的操作同时进行的,例如上文的索引,在建的同时,不允许有人在SCM_SALAUD_BILL_HDR 上执行update、insert等操作,这个在生产环境中几乎是不可能。
那online选项就派上用场,可以DML操作与创建索引操作是否可以同时进行,但是代价就是建索引的时间会延长。
create index idx_scm_salaud_bill_hdr_relid
on SCM_SALAUD_BILL_HDR (audrelateid) online;
on SCM_SALAUD_BILL_HDR (audrelateid) online;
3.NOLOGGING,是否需要记录日志信息
这个好理解,就是建索引时记不记日志,一般用在在大型表上建索引,使用该参数,默认是记日志。
4.COMPUTE STATISTICS,是否更新统计信息。
数据库在选择执行计划时,依据就是表、索引的统计信息,该参数会提示数据库建索引的同时,更新对应的统计信息。但是在一个数据修改量比较大的环境中,使用该选项有可能导致执行计划的不稳定。
5.PARALLEL,多服务进程创建索引。
数据库服务器若是多CPU情况下,使用该参数会增加并发,提高效率