Tsql SQL非聚集索引设计

Tsql SQL非聚集索引设计,tsql,indexing,sql-server-2008-r2,Tsql,Indexing,Sql Server 2008 R2,我有一张大桌子 sID Int PK pos Int PK wID Int PK 自连接 T2.sID=T1.sID T2.pos=T1.pos+1 T1.wID='alpha' T2.wID='beta' 在(wID,sID)上添加了一个索引,确实很有帮助(很多) 在执行计划中,注意到输出为sID,pos 因此,将索引更改为(wID、sID、pos) 令我惊讶的是,查询计划保持不变,执行时间没有任何改进 因此,将索引更改为(wID) 相同的查询计划和相同的执行时间 显然,对于相同的性能

我有一张大桌子

  • sID Int PK
  • pos Int PK
  • wID Int PK
自连接

  • T2.sID=T1.sID
  • T2.pos=T1.pos+1
  • T1.wID='alpha'
  • T2.wID='beta'
(wID,sID)
上添加了一个索引,确实很有帮助(很多)

在执行计划中,注意到输出为sID,pos

因此,将索引更改为
(wID、sID、pos)

令我惊讶的是,查询计划保持不变,执行时间没有任何改进

因此,将索引更改为
(wID)

相同的查询计划和相同的执行时间

显然,对于相同的性能,将使用较小的索引

我的问题是,为什么较小的指数同样有效


是因为额外的数据就是PK吗

另外:如果您的PK由所有三列组成,那么您已经在这三列上建立了(聚集)索引(除非您明确关闭了该索引)-这取决于主键定义中定义这些列的顺序(您没有提供…)@marc_s请查看这三列上的PK名称。是,按顺序列出了主键。问题是,这条线是否符合标准?做记号