2010-08-29 48 views
0

關於MS SQL-Server, 表是包含在該表的常規非唯一索引中的表的主鍵列嗎?主鍵應包含在常規索引中

如果不是,將它包含在索引中是否有意義?

create table dbo.People (
PK_PersonId int not null, 
PersonName nvarchar (100), 
Bunch of Other Fields 
, 

因此,當在PersonName上創建索引時,添加主鍵列PK_PersonId是否有意義?

回答

7

當您在SQL Server中的PK,在默認情況下它的列(S)創建了一個聚集索引

當你創建一個非聚集索引,要麼點回聚簇索引,或者如果你不」噸有一個聚集索引(你的表是一個堆),它指向回到談判桌前與行定位

因此,換句話說,非聚集索引中已經有

+0

並不真正回答問題嗎? – gbn 2010-08-29 12:19:18

+0

增加了一些更多的verbage – SQLMenace 2010-08-29 12:32:11

1

一個非聚集索引的PK值無論如何將參考聚集索引,而不是實際數據。 默認情況下,PK在SQL Server中進行羣集。

因此,不需要添加它:它隱含在那裏如果 PersonID是由PRIMARY KEY約束定義的聚集索引。

0

如果要創建索引的速度那麼在非聚集索引中製作PersionId沒有意義。非聚集索引將以與聚集索引相同的方式引用記錄,因此無論如何它都存在。