Sql server 主键应该包含在常规索引中吗

Sql server 主键应该包含在常规索引中吗,sql-server,indexing,Sql Server,Indexing,关于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时,默认情况下会在这些列上创建聚集索引 创建非聚集索引时,它会

关于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时,默认情况下会在这些列上创建聚集索引

创建非聚集索引时,它会指向聚集索引,或者如果没有聚集索引(表是一个堆),它会指向带有行定位器的表


因此,换句话说,非聚集索引中已经有PK值

非聚集索引将引用聚集索引,而不是实际数据。 默认情况下,PK聚集在SQL Server中


因此,无需添加它:如果PersonID是由
主键
约束定义的聚集索引,那么它就隐式存在。

如果您的PK也是聚集索引键(根据默认SQL威胁),那么PK将包含在所有非聚集索引中


如果您创建索引是为了加快名称搜索,那么在非聚集索引中创建PersionId是没有意义的。非聚集索引将以与聚集索引相同的方式引用记录,因此它仍然存在。

并不能真正回答问题,是吗。。。?