其實指定列的索引就相當於對指定的列進行排序,為什麼要排序呢?因為排序有利於對該列的查詢,可以大大增加查詢效率。(那麼可能有人認為應該對所有的列排序,這樣就可以增加整個數據庫的查詢效率?這樣的想法是錯誤的,原因是建立索引也是要消耗系統資源的,給每個表裡的每個列都建立索引那麼將對系統造成極大的負擔,那就更別提效率了!)---------簡單的說建立一個列的索引,就相當與建立一個列的排序。
主鍵其實就是一個索引,但是這個索引跟一般的索引有所不同,不同在於主鍵所在的列裡的每一個的記錄都是唯一的,也可以說不能在主鍵裡出現相同的記錄,在同一個表裡只能有一個主鍵。(主鍵等於索引,索引不一定等於主鍵)----------簡單的說主鍵就是所在列不能出現相同記錄的特殊索引,而且這個索引只能在表裡出現一次。
www.2cto.com
1.主鍵一定是唯一性索引,唯一性索引並不一定就是主鍵;
2.一個表中可以有多個唯一性索引,但只能有一個主鍵;
3.主鍵列不允許空值,而唯一性索引列允許空值。
主鍵在表中有唯一標識的作用,不可重復,不能為空;
當其它表建立外鍵關聯當前表時,只可以關聯主鍵。
唯一索引,確切的說是唯一約束,
create unique index index_id on(id);
是用來限制當前表插入時建立唯一約束的字段不可重復。
一個是做為唯一標識,先唯一後標識; 另一個是插入時做唯一限制。
摘自 simonjay2007的專欄