在SQL Server 2008中,关系是否会使查询更快?

时间:2011-09-07 05:41:35

标签: sql performance sql-server-2008

例如,如果我有一个BlogPosts表和一个PostCategory表,BlogPosts表中有一个FK字段PostCategoryId。一段关系会使查询更快,还是更符合数据质量?

何时涉及联接表?从PostCategoryId表中取出BlogPosts字段,并在它们之间有一个名为PostsInCategories的表,其中只有2个FK字段:BlogPostId和{{1} },组合形成PK。

关系会改善那里的查询吗?

1 个答案:

答案 0 :(得分:7)

外键关系是关于强制执行数据完整性,例如确保你没有任何“伏都教”子行没有父行,等等。

外键关系本身不能提高性能,因为SQL Server将自动为外键创建任何索引。

由于多种原因(在强制执行参照完整性和提高JOIN性能时提高性能 - 请参阅Kimberly Tripp's blog post on the topic),建议将步骤添加到表中的所有外键字段 - 并且添加这些索引会加快速度查询将使用这些FK关系。