0
我有一个包含多于40k行的表和一个包含此表上的2列的主键。主键(> 1列)上的索引(1列)是否有用? (SQL)
这些主键列之一上的独立非聚簇(非唯一!)索引是否可以加快对该列的查询(不使用其他PK列)?或者SQL Server会以同样有效的方式使用主键来访问只有一列主键?
我知道一个主键是一个唯一的索引,但与问题无关,我只关心跨越多列的主键而不是仅从一列PK列访问数据时的主键。 。
我有一个包含多于40k行的表和一个包含此表上的2列的主键。主键(> 1列)上的索引(1列)是否有用? (SQL)
这些主键列之一上的独立非聚簇(非唯一!)索引是否可以加快对该列的查询(不使用其他PK列)?或者SQL Server会以同样有效的方式使用主键来访问只有一列主键?
我知道一个主键是一个唯一的索引,但与问题无关,我只关心跨越多列的主键而不是仅从一列PK列访问数据时的主键。 。
假设的PK是:字段1,字段2(按该顺序)
因此,在最后一种情况下,您可能会考虑Field2上的单独索引。请注意,如果它有更多的话。您正在返回除PK字段以外的其他字段。在这种情况下,如果你的PK是CLUSTERED(默认情况下,PK是),那么数据已经在索引中。但是在NONCLUSTERED索引中(例如,如果您在Field2上创建了一个索引),它必须关闭并执行查找以获取查询返回的其他字段。那么你可以进入决定是否在NONCLUSTERED索引中包含INCLUDE列的领域。
推荐阅读一下这篇文章,值得加快。
您是在PK索引的第一个还是第二个查询的列? – beny23 2012-03-06 13:35:24
可以是任一列 – cdbeelala89 2012-03-06 13:38:19