例如,如果我有一个BlogPosts
表和一个PostCategory
表,BlogPosts
表中有一个FK字段PostCategoryId
。一段关系会使查询更快,还是更符合数据质量?
何时涉及联接表?从PostCategoryId
表中取出BlogPosts
字段,并在它们之间有一个名为PostsInCategories
的表,其中只有2个FK字段:BlogPostId
和{{1} },组合形成PK。
关系会改善那里的查询吗?
答案 0 :(得分:7)
外键关系是关于强制执行数据完整性,例如确保你没有任何“伏都教”子行没有父行,等等。
外键关系本身不能提高性能,因为SQL Server将不自动为外键创建任何索引。
由于多种原因(在强制执行参照完整性和提高JOIN性能时提高性能 - 请参阅Kimberly Tripp's blog post on the topic),建议将步骤添加到表中的所有外键字段 - 并且添加这些索引会加快速度查询将使用这些FK关系。