using index的作用:
using index可以讓你在創建主鍵、唯一性約束的時候使用指定的索引或創建索引、或修改索引的存儲結構。
不用using index創建主鍵的情況
先不用using index,創建主鍵時oracle自動創建唯一索引。主鍵名和索引名一致,主鍵列和索引列一致。
alter table emp add constraint pk_emp_id primary key(emp_id);
執行上面語句的同時,同名索引pk_emp_id也被創建。
因此,當使用下面語句刪除主鍵的同時,同名索引也會被刪除:
alter table emp drop primary key;
如果我想刪除主鍵保留索引,可以使用下面語句:
alter table emp drop primary key keep index;
使用using index創建主鍵的情況
如果表emp只有索引沒有主鍵,如果想要使用剛創建的唯一索引pk_emp_id再創建主鍵,此時就用到了using index。
alter table emp add constraint pk_emp_id primary key(emp_id)
using index pk_emp_id ;
這樣主鍵就創建成功了。注意,using index后面的索引所指定的索引列必須與主鍵指定的主鍵列相同,索引名和主鍵名相同與否沒影響。
實際上,在創建主鍵時不使用using index也可以創建索引。一是在主鍵列沒有索引時,不使用using index也可以創建同名索引;二是主鍵列已經創建索引,不管索引名是否與主鍵名相同,都不會再創建相應的索引。
這時候,使用alter table emp drop primary key;刪除主鍵時,與不使用using index情況不同的是,由於索引不是在建主鍵時自動添加的,僅有主鍵被刪除,索引會被保留下來。