主鍵(PK)與非空唯一索引(Unique Index)的區別

tolywang發表於2009-06-04

從概念上將,這兩個屬於不同的範疇

主鍵是一種constraint ,它對應外來鍵是為了實現參照完整性而建立的(當然有時候主鍵沒有對應的外來鍵,用起來就相當於非空唯一索引)  ,  可以使用 select  *  from  dba_constraints   where   constraint_type='P' ;  查詢到 。  

他們兩個的聯絡估計可以這樣認為:   建立主鍵(PK,)時自動建立的索引和其他非空唯一索引有什麼區別?   PK是一種約束, 而Index 是為了最佳化SQL執行效率而建立的一些Object ,  概念上不屬於同一個範疇,使用目的不一樣,只是由於建立PK的時候一定會建立一個對應的唯一索引,所以使用起來和唯一Index 差不多 。

主鍵是一個或一組欄位,這些欄位上附屬了非空唯一索引這個物件; 而唯一索引就是依附於表的一些物件。

總結一下,區別有以下幾點 :
1、一個Table 只能有一個主鍵而可以有多個非空唯一索引; PK可以有外來鍵FK 。
2、對外的應用程式介面如ODBC或者JAVA中的Hibernate通常都是以主鍵來載入記錄
3、含非空唯一索引或唯一索引的列可以改成not unique,  而主鍵卻不能
4、執行計劃中會優先選擇主鍵 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-605315/,如需轉載,請註明出處,否則將追究法律責任。

相關文章