我有一个超过40k行的表,在这个表上有一个由2列组成的主键。
一个独立的非集群(不是唯一的!)在这些主键列之一上建立索引可以加快对该列的查询速度(而不使用其他主键列)?或者,SQL Server是否会以同样有效的方式使用主键来仅访问主键的一列?
我知道主键是唯一的索引,但这与问题无关,我只关心跨多个列的主键,而不是只从其中一个PK列访问数据时的主键。
发布于 2012-03-06 21:39:17
假设PK为on: Field1、Field2 (按此顺序)
根据Field1筛选的
因此,在最后一种情况下,您可以考虑在Field2上使用单独的索引。注意,如果你返回表中的其他字段而不是主键字段,就会有更多的问题。在这种情况下,如果您的主键是集群的(默认情况下是集群的),那么数据已经在索引中了。但在非NONCLUSTERED索引中(例如,如果您在Field2上创建了一个索引),它将不得不停止并执行查找,以获取查询返回的其他字段。因此,您可以开始决定是否在NONCLUSTERED索引中包含列。
建议在这方面做一些阅读,这是值得的。
https://stackoverflow.com/questions/9584506
复制相似问题