關於MS SQL-Server, 表是包含在該表的常規非唯一索引中的表的主鍵列嗎?主鍵應包含在常規索引中
如果不是,將它包含在索引中是否有意義?
create table dbo.People (
PK_PersonId int not null,
PersonName nvarchar (100),
Bunch of Other Fields
,
因此,當在PersonName上創建索引時,添加主鍵列PK_PersonId是否有意義?
關於MS SQL-Server, 表是包含在該表的常規非唯一索引中的表的主鍵列嗎?主鍵應包含在常規索引中
如果不是,將它包含在索引中是否有意義?
create table dbo.People (
PK_PersonId int not null,
PersonName nvarchar (100),
Bunch of Other Fields
,
因此,當在PersonName上創建索引時,添加主鍵列PK_PersonId是否有意義?
當您在SQL Server中的PK,在默認情況下它的列(S)創建了一個聚集索引
當你創建一個非聚集索引,要麼點回聚簇索引,或者如果你不」噸有一個聚集索引(你的表是一個堆),它指向回到談判桌前與行定位
因此,換句話說,非聚集索引中已經有
一個非聚集索引的PK值無論如何將參考聚集索引,而不是實際數據。 默認情況下,PK在SQL Server中進行羣集。
因此,不需要添加它:它隱含在那裏如果 PersonID是由PRIMARY KEY
約束定義的聚集索引。
如果你的PK也是聚集索引鍵(按SQL威脅,默認值),那麼PK將包含在所有非聚集索引
如果要創建索引的速度那麼在非聚集索引中製作PersionId沒有意義。非聚集索引將以與聚集索引相同的方式引用記錄,因此無論如何它都存在。
並不真正回答問題嗎? – gbn 2010-08-29 12:19:18
增加了一些更多的verbage – SQLMenace 2010-08-29 12:32:11