2010-09-25 152 views

回答

23

的獨特的作品是不是其中的區別所在。索引和關鍵不是一回事,也沒有可比性。

的關鍵是一個數據列或幾列中,被強制爲唯一與一個約束,無論是主鍵或明確拒絕唯一約束。而索引是用於存儲數據位置的結構,以便更快地檢索。

從文檔:

Unique Index

創建表或 視圖唯一索引。唯一索引是其中 兩行被允許具有相同 索引鍵值。集羣 索引視圖上的必須是唯一的

Unique key (Constraint)

您可以使用UNIQUE約束,使 確保沒有重複的值是 在做 特定的列中輸入不參與主鍵。 雖然兩者的唯一約束和 PRIMARY KEY約束強制 唯一性,當你想強制 唯一一列或多列的組合 使用唯一約束 而不是PRIMARY KEY約束 的,這不是主要的 鑰匙。

19

MSDN article comparing the two is what you're after。術語是這樣的,「約束」是ANSI,但在SQL Server中,您不能禁用唯一約束...

對於大多數用途,沒有區別 - 約束被實現爲封面下的索引。 MSDN文章備份這個向上 - 的差在所述元數據,對於像:

  • 的調整FILLFACTOR
  • INCLUDE提供更有效的覆蓋索引(複合約束)
  • 篩選索引是象對行子集的約束/忽略多個空值等。
+1

「約束來作爲幕後的指數」 - 絕對的權利,就不可能有效地執行無論如何沒有索引。 – DaveBoltman 2015-08-03 12:59:18

2

「唯一鍵」是一個重言式。密鑰(AKA「候選密鑰」)是數據庫的邏輯特徵 - 強制實施表中一組屬性的唯一性的約束。

索引是一種物理級別特性,旨在以某種方式優化性能。索引有很多種類。

-1

唯一密鑰:這是一個限制數據庫的限制。這個限制是不允許重複的值。例如,如果你想選擇一個列作爲主鍵應該是NOT NULL &獨一無二的。

唯一索引:它是一個在您的數據庫上執行查詢時提高性能的索引。在唯一索引中,它也不允許索引中的重複值。即沒有兩行將具有相同的索引鍵值。

0

關鍵字(又名關鍵字)和索引都是錶行的標識符。
儘管索引是平行標識結構,包含指向已標識行的指針,而鍵是原位字段成員。

作爲標識符的關鍵在於唯一性(約束)和NOT NULL(約束)。 NULL作爲標識符沒有意義(因爲null無法識別任何內容)以及非唯一標識值。
非聚集索引可以包含實際數據,而不是用作標識符真實數據等是不唯一的[1]

不幸做法是,鍵或索引(標識符)被約束稱爲(規則或限制)以前的答案是什麼。

鍵是在上下文中使用:

  • 備用又名次級又名候選鍵,可以是多個
  • 複合鍵(幾個字段的組合)
  • 主鍵(超密鑰),天然或替代關鍵的,只有一個,真正用於參照完整性
  • 外鍵

外鍵處於關鍵其他表(它是主鍵),甚至不是他們經常提到的鍵。這種使用是通過將「外鍵約束」術語的簡寫混淆爲「外鍵」來解釋的。

主鍵約束確實意味着NOT NULL和UNIQUE約束+被引用的列(或組合列)是標識符,並且不幸被「主鍵」或「主鍵約束」替代,但它們都不能被只有(主鍵)約束或僅由(主鍵)。


更新:
我相關的問題:
[1]
UNIQUE argument for INDEX creation - what's for?