我有一个名为TeacherClass的组合表,它有两列,TeacherID和ClassID。主键是TeacherID和ClassID。即使这些也被认为是外键,我应该为每列分别添加一个索引,即使它们在主键上都有一个索引吗?SQL Server中的复合表,主键,外键和索引
0
A
回答
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
的索引是完全多余的。
相关问题
- 1. SQL:外键引用复合主键
- 2. SQL外键的表的复合主键
- 3. Sql Server,复合主键和聚簇索引
- 4. SQL Server复合主键
- 5. SQL Server主键/外键
- 6. SQL Server 2005外键和索引
- 7. SQL Server表主键和外键位于相反的表中?
- 8. 外键和主键Postgres和索引
- 9. SQL Server中的复合外键
- 10. 如何创建复合外键的表,复合主键
- 11. Sql Server索引包含主键?
- 12. SQL SERVER,复合主键处理
- 13. SQL Server如何存储复合主键?
- 14. 关于SQL中的索引和主键?
- 15. SQL Server的外键引用
- 16. 聚集索引的外键VS主键
- 17. 从外键的复合主键POJOs
- 18. Guid主键/外键两难SQL Server
- 19. 复合主键索引维护
- 20. 复合键和外键
- 21. 复合主键/外键头痛
- 22. 引用复合主键
- 23. SQL Server 2008:找出表中的主键/外键?
- 24. SQL Server更新主键也是两个表中的外键
- 25. 同一表中的主键和外键
- 26. 外键和索引
- 27. 外键和索引
- 28. 学说复合主键外键
- 29. 休眠 - 复合主键包含外键
- 30. 使用外键保存复合主键