1.一個表只能有一個主索引-PRIMARY,且只有是數據庫表才有主索引,后綴為.CDX,索引關鍵字是不可以重復的.哪怕是空記錄也只可以有一條.
2.候選索引可以有很多個,索引關鍵字同樣不可以重復,同樣只存在於數據庫表.
3.唯一索引,可以存在於自由表,但索引關鍵字不可以重復.
4.普通索引簡單的理解就是只起排序作用.索引關鍵字是可以重復的.可存在於自由表.
主鍵與唯一索引的區別
主鍵是一種約束,唯一索引是一種索引,兩者在本質上是不同的。 主鍵創建后一定包含一個唯一性索引,唯一性索引並不一定就是主鍵。 唯一性索引列允許空值,而主鍵列不允許為空值。 主鍵列在創建時,已經默認為空值 + 唯一索引了。 主鍵可以被其他表引用為外鍵,而唯一索引不能。 一個表最多只能創建一個主鍵,但可以創建多個唯一索引。 主鍵更適合那些不容易更改的唯一標識,如自動遞增列、身份證號等。 在 RBO 模式下,主鍵的執行計划優先級要高於唯一索引。 兩者可以提高查詢的速度。
CREATE UNIQUE INDEX test_UniqueKey ON test (UniqueKey);
聚集索引:
聚集索引基於數據行的鍵值,在表內排序和存儲這些數據行。每個表只能有一個聚集索引,應為數據行本分只能按一個順序存儲。
在聚集索引中,表中各行的物理順序與索引鍵值的邏輯(索引)順序相同。聚集索引通常可加快UPDATE和DELETE操作的速度,因為這兩個操作需要讀取 大量的數據。創建或修改聚集索引可能要花很長時間,因為執行這兩個操作時要在磁盤上對表的行進行重組。 www.2cto.com
非聚集索引:
因為一個表中只能有一個聚集索引,如果需要在表中建立多個索引,則可以創建為非聚集索引。表中的數據並不按照非聚集索引列的順序存儲,但非聚集索引的索引行中保存了非聚集鍵值和行定位器,可以快捷地根據非聚集鍵的值來定位記錄的存儲位置。
無論是聚集索引,還是非聚集索引,都可以是唯一索引。在SQL Server中,當唯一性是.數據本身的特點時,可創建唯一索引,但索引列的組合不同於表的主鍵。例如,如果要頻繁查詢表Employees(該表主鍵為 列Emp_id)的列Emp_name,而且要保證姓名是唯一的,則在列Emp_name上創建唯一索引。如果用戶為多個員工輸入了相同的姓名,則數據庫 顯示錯誤,並且不能保存該表。
