我在表格中有一列(例如用戶名),我想確保它是唯一的。因此,我爲該列創建了一個唯一的鍵,並將其稱爲IX_Users_UserName。Sql Server唯一鍵也是索引嗎?
現在,如果我根據用戶名進行大量搜索用戶,我想確保該字段有一個索引。
我需要創建一個單獨的索引,還是唯一的鍵也被視爲索引,就像主鍵是一個聚集的唯一鍵?
我在表格中有一列(例如用戶名),我想確保它是唯一的。因此,我爲該列創建了一個唯一的鍵,並將其稱爲IX_Users_UserName。Sql Server唯一鍵也是索引嗎?
現在,如果我根據用戶名進行大量搜索用戶,我想確保該字段有一個索引。
我需要創建一個單獨的索引,還是唯一的鍵也被視爲索引,就像主鍵是一個聚集的唯一鍵?
唯一的關鍵是我懷疑幾乎每一個數據庫產品的索引。它必須是,否則數據庫將很難實施它:當你插入一個值時,數據庫必須回答「這個值是否已經存在?」理智的方法是諮詢索引。
我沒有在我面前測試的SQL Server,但如果沒有,我會感到震驚。
基本上,在SQL Server中,唯一的約束確實是通過唯一索引實現的。
UNIQUE約束和UNIQUE INDEX之間的差異非常微妙,真的。如果你創建了一個UNIQUE INDEX,你可以在另一個表的外鍵約束中引用它(如果你創建了一個UNIQUE約束,則不起作用....)。
那有什麼區別?那麼 - 一個唯一的約束在表格中更是一個合乎邏輯的事情 - 您想要表達給定列(或列組)的內容是唯一的意圖。
獨特的索引(像大多數索引)更像是一個「幕後」實現細節。
從我的角度來看,除非您真的有問題,否則我總是使用UNIQUE INDEX - 作爲參照完整性約束的一部分的好處非常有效,在某些情況下可能非常有用。在功能上,實際上,真正使用唯一約束與唯一索引沒有區別。
我覺得有必要指出一個主鍵不是自動聚集的唯一鍵。您的聚簇索引不需要位於主鍵上。 – 2010-07-21 19:23:01
另請參閱http://stackoverflow.com/questions/564895/what-is-the-difference-between-unique-key-and-index-with-isunique-yes – 2011-09-20 19:06:52