2012-03-02 100 views

回答

1

如果它们都是PK的一部分,那么很可能已经在聚集索引中,但索引将具有,例如(TeacherID, ClassID),而不是其他方式(ClassID,TeacherID)。这意味着运行像当表会快速:

SELECT * FROM TeacherClass WHERE TeacherID = 9 

但运行缓慢

SELECT * FROM TeacherClass WHERE ClassID = 9 

时,如果在运行类似select语句计划,增加包括,classid和TeacherID一个新的指数,该订单。然后您不需要任何单独的索引(具有包含Col1和Col2的索引,使索引仅包括Col1冗余)。

1

如果您在(TeacherID, ClassID)上有主键,那么您已经有了这两个索引。

但是,仅使用ClassID作为其参数的查询将无法利用该索引 - 该索引仅适用于(TeacherID)(TeacherID, ClassID)

所以是的 - 如果你ClassID列被用作其他表的外键,我肯定会争辩说你应该把一个索引放在(ClassID)上。

然而只有TeacherID的索引是完全多余的。