最佳答案
假设我有2个表,Products 和 ProductCategory。这两个表都有关系,并且这是查询。
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;
当我创建执行计划时,表 ProductCategory 执行集群索引查找,这是预期的。但是对于表产品,它执行集群索引扫描,这使我怀疑。为什么 FK 不能帮助提高查询性能?
所以我必须在 Products 上创建索引。类别。当我再次创建执行计划时,两个表都执行索引查找。并且估计的子树成本大大降低。
我的问题是:
除了 FK 有助于解决关系约束之外,它还有其他用处吗? 它是否提高了查询性能?
我是否应该在所有表中的所有 FK 列上创建索引(比如 Products. Category oryId) ?