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