我有一个表SchoolMembers
,它有两列:
person_id school_id
-------------------------
1134 361
1135 362
...
此表的主键是{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
......我应该有person_id
的INDEX吗?我需要先前的查询快速
答案 0 :(得分:7)
问题:如果我有这个问题:
SELECT * from SchoolMembers where person_id = 1135
......我应该为person_id设一个INDEX吗?
没有。 {person_id,school_id}上的唯一索引就足够了。通常,索引可用于其前导列的有效访问。
答案 1 :(得分:3)
主键列的顺序有所不同。您已将自己的密钥描述为person_id
然后school_id
。使用该设置,在person_id
上搜索时,您应该获得良好的性能。然而事实恰恰相反。如果您要按school_id
进行搜索,则无法快速找到该行。