我有一个名为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表中有复合键和主键
- 4. Sql Server,复合主键和聚簇索引
- 5. SQL Server,自引用国外复合键
- 6. SQL Server复合主键
- 7. SQL Server - 表具有复合主键
- 8. SQL Server主键/外键
- 9. SQL Server 2005外键和索引
- 10. 复合主键+外键
- 11. SQL Server表主键和外键位于相反的表中?
- 12. 外键复合主键
- 13. 外键和主键Postgres和索引
- 14. SQL Server中的复合外键
- 15. 复合主键或外键
- 16. 复合主键和外键jpa
- 17. JPA:复合主键和外键
- 18. 创建具有复合主键的表引用两个外键
- 19. 带复合主键的外键
- 20. 作为复合主键一部分的SQL表外键
- 21. Sql Server索引包含主键?
- 22. SQL SERVER,复合主键处理
- 23. SQL Server如何存储复合主键?
- 24. 如何创建复合外键的表,复合主键
- 25. SQL Server的外键引用
- 26. 关于SQL中的索引和主键?
- 27. SQL主键和外键
- 28. 聚集索引的外键VS主键
- 29. 复合主键,外键。引用对象或关键字?
- 30. Guid主键/外键两难SQL Server