为了账号安全,请及时绑定邮箱和手机立即绑定

外键是否可以提高查询性能?

外键是否可以提高查询性能?

慕妹3146593 2019-12-17 10:53:22
假设我有2个表格,产品和产品类别。两个表在CategoryId上都有关系。这就是查询。SELECT p.ProductId, p.Name, c.CategoryId, c.Name AS CategoryFROM Products pINNER JOIN ProductCategories c ON p.CategoryId = c.CategoryIdWHERE c.CategoryId = 1;当我创建执行计划时,表ProductCategories会执行群集索引查找,这与预期的一样。但是对于表Products,它执行集群索引扫描,这使我感到怀疑。为什么FK不能帮助提高查询性能?因此,我必须在Products.CategoryId上创建索引。当我再次创建执行计划时,两个表都执行索引查找。并且估计的子树成本大大降低了。我的问题是:除了FK有助于关系约束之外,它还有其他用途吗?它会提高查询性能吗?是否应该在所有表的所有FK列(如Products.CategoryId)上创建索引?
查看完整描述

3 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

外键是用于确保数据库完整性的DBMS概念。

对性能的任何影响/改进都将特定于所使用的数据库技术,并且仅次于外键。

在SQL Server中,优良作法是确保所有外键上至少都具有非聚集索引。

我希望这可以为您解决问题,但请随时索取更多详细信息。


查看完整回答
反对 回复 2019-12-17
  • 3 回答
  • 0 关注
  • 1428 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信