2012-09-04 61 views
6

我只是想知道我們是否可以在沒有任何類型的索引的sql服務器上的表上創建一個主鍵?在表中沒有任何索引的主鍵?

+6

主鍵是一個索引。你的問題沒有感覺... – sp00m

+1

我知道abt that.My問題是我想創建Pk,但沒有任何索引 – AnandPhadke

+2

或者是迂腐PK是一個邏輯約束,總是由一個獨特的索引當前版本的SQL Server。 –

回答

10

否。作爲實現的詳細信息,SQL Server使用索引維護主鍵。你無法阻止它這樣做。主鍵:

  • 確保沒有重複的鍵值存在
  • 允許各行被識別/訪問

SQL服務器已經有機制,提供這些功能 - 唯一索引 - 所以它使用那些強制約束。

+0

我想補充說,默認情況下,sql server會創建聚簇索引。您可以重寫此行爲,服務器將創建非聚集索引。 – gstackoverflow

0

事實上索引函數的方式與書本遍歷的方式相同。除非頁面號及其與主題的關係,否則不能訪問特定頁面或主題。行的「分頁」(排序)由SQL Server中的「集羣索引」完成。如果表中沒有PK,可以在任何唯一鍵合格列上添加聚簇索引。由於表上不能有多個聚簇索引,並且所有其他非聚簇索引都依賴於聚簇索引進行搜索/遍歷,所以無法創建沒有聚簇索引的列PK。

+2

PK!=聚集索引。您可以擁有包含多個非聚簇索引並且沒有聚簇索引(又名堆)的表。物理排序實際上是不相關的,並不完全由聚集索引決定。 –

-1

通過在primary key單詞後面添加關鍵字NONCLUSTERED,可以創建一個不是聚集索引的主鍵的表。

+0

而不是隻發佈這樣的問題的答案。只是提供一個例子,以便更好地理解。 – tarzanbappa

相關問題