oracle中建索引可能大家都會,但是建索引是有幾個選項引數卻很少有人關注,在某些特殊環境下,可能會非常有用,下面一一說明:
1.NOSORT,記錄排序可選項。
預設情況下,在表中建立索引的時候,會對錶中的記錄進行排序,排序成功後再建立索引。但是當記錄比較多的是,這個排序作業會佔用比較多的時間。
特殊情況下,我們就可以使用該引數加快建索引的速度。
例如:
create index idx_scm_salaud_bill_hdr_relid 
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;
 
3.NOLOGGING,是否需要記錄日誌資訊
這個好理解,就是建索引時記不記日誌,一般用在在大型表上建索引,使用該引數,預設是記日誌。
 
4.COMPUTE STATISTICS,是否更新統計資訊。
資料庫在選擇執行計劃時,依據就是表、索引的統計資訊,該引數會提示資料庫建索引的同時,更新對應的統計資訊。但是在一個數據修改量比較大的環境中,使用該選項有可能導致執行計劃的不穩定。
 
5.PARALLEL,多服務程序建立索引。
資料庫伺服器若是多CPU情況下,使用該引數會增加併發,提高效率