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

spo*_*rts 1 sql sql-server indexing

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

  person_id   school_id
 -------------------------
    1134       361
    1135       362
         ...
Run Code Online (Sandbox Code Playgroud)

该表的主键是{person_id, school_id},因此这种组合是独一无二的.

主键是用一个名为索引的索引编制的 PK_dbo.SchoolMembers

  • person_id 没有INDEX
  • school_id 没有INDEX
  • {person_id, school_id} 有一个INDEX

问题:如果我有这个问题:

     SELECT * from SchoolMembers where person_id = 1135
Run Code Online (Sandbox Code Playgroud)

......我应该有一个INDEX person_id吗?我需要以前的查询快速

Dav*_*oft 7

问题:如果我有这个查询: SELECT * from SchoolMembers where person_id = 1135 ...我应该为person_id设置一个INDEX吗?

不.{person_id,school_id}上的唯一索引就足够了.通常,索引可用于其前导列的有效访问.