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
搜索,它将无法快速找到该行。如果有疑问,请包括实际执行计划,运行查询,然后自己查看。如果有疑问,请包括实际执行计划,运行查询,然后自己查看。