Sql 复合索引和查询到单个列:我需要索引吗?

Sql 复合索引和查询到单个列:我需要索引吗?,sql,sql-server,indexing,Sql,Sql Server,Indexing,我有一个表SchoolMembers,它有两列: person_id school_id ------------------------- 1134 361 1135 362 ... 此表的主键是{person\u id,school\u id},因此此组合是唯一的 主键通过一个名为PK\u dbo.SchoolMembers person\u id没有索引 school\u id没有索引 {person\u id,sch

我有一个表
SchoolMembers
,它有两列:

  person_id   school_id
 -------------------------
    1134       361
    1135       362
         ...
此表的主键是
{person\u id,school\u id}
,因此此组合是唯一的

主键通过一个名为
PK\u dbo.SchoolMembers

  • person\u id
    没有索引
  • school\u id
    没有索引
  • {person\u id,school\u id}
    有一个索引
问题:如果我有这个问题:

     SELECT * from SchoolMembers where person_id = 1135
…我应该为
个人id
建立索引吗?我需要上一个查询快速

问题:如果我有这个问题:
从person\u id=1135的学校成员中选择*
…我应该有个人id的索引吗

否。{person\u id,school\u id}上的唯一索引就足够了。通常,索引可以通过其前导列进行有效访问

问题:如果我有这个问题:
从person\u id=1135的学校成员中选择*
…我应该有个人id的索引吗


否。{person\u id,school\u id}上的唯一索引就足够了。通常,索引可以通过其前导列进行有效访问

主键列的顺序会有所不同。您已将您的钥匙描述为由
个人id
然后
学校id
提供。通过这种设置,在
个人id
上搜索时应该会获得良好的性能。然而,事实并非如此。如果按
school\u id
搜索,则无法快速找到该行。

主键列的顺序会有所不同。您已将您的钥匙描述为由
个人id
然后
学校id
提供。通过这种设置,在
个人id
上搜索时应该会获得良好的性能。然而,事实并非如此。如果要按
学校id
搜索,它将无法快速找到该行。

如果有疑问,请包括实际执行计划,运行查询,然后自己查看。如果有疑问,请包括实际执行计划,运行查询,然后自己查看。