假设我有两个表,产品和产品类别.两个表在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执行集群索引查找,这与预期的一样.但对于表产品,它执行集群索引扫描,这让我感到怀疑.为什么FK无助于提高查询性能?
所以我必须创建产品索引.分类.当我再次创建执行计划时,两个表都执行索引查找.估计子树成本大大降低.
我的问题是:
除了FK有助于关系约束之外,它还有其他用处吗?它是否提高了查询性能?
我应该在所有表中的所有FK列(liked Products.CategoryId)上创建索引吗?