首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >主键(> 1列)上的索引(1列)有用吗?(SQL)

主键(> 1列)上的索引(1列)有用吗?(SQL)
EN

Stack Overflow用户
提问于 2012-03-06 21:20:16
回答 1查看 105关注 0票数 0

我有一个超过40k行的表,在这个表上有一个由2列组成的主键。

一个独立的非集群(不是唯一的!)在这些主键列之一上建立索引可以加快对该列的查询速度(而不使用其他主键列)?或者,SQL Server是否会以同样有效的方式使用主键来仅访问主键的一列?

我知道主键是唯一的索引,但这与问题无关,我只关心跨多个列的主键,而不是只从其中一个PK列访问数据时的主键。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-06 21:39:17

假设PK为on: Field1、Field2 (按此顺序)

根据Field1筛选的

  • 查询可以受益于该PK索引(索引查找)。根据Field1和Field2筛选的
  • 查询可以受益于该PK索引(索引查找)。根据Field2筛选的
  • 查询无法受益于该PK索引(索引扫描)。

因此,在最后一种情况下,您可以考虑在Field2上使用单独的索引。注意,如果你返回表中的其他字段而不是主键字段,就会有更多的问题。在这种情况下,如果您的主键是集群的(默认情况下是集群的),那么数据已经在索引中了。但在非NONCLUSTERED索引中(例如,如果您在Field2上创建了一个索引),它将不得不停止并执行查找,以获取查询返回的其他字段。因此,您可以开始决定是否在NONCLUSTERED索引中包含列。

建议在这方面做一些阅读,这是值得的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9584506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档