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名称。是,按顺序列出了主键。问题是,这条线是否符合标准?做记号