相关疑难解决方法(0)

外键是否提高了查询性能?

假设我有2个表,Products和ProductCategories.两个表都与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;
Run Code Online (Sandbox Code Playgroud)

当我创建执行计划时,表ProductCategories执行集群索引查找,这是期望的.但对于表产品,它执行集群索引扫描,这让我怀疑.为什么FK无助于提高查询性能?

所以我必须在Products.CategoryId上创建索引.当我再次创建执行计划时,两个表都执行索引查找.估计的子树成本降低了很多.

我的问题是:

  1. 除了FK有助于关系约束,它还有其他用处吗?它是否提高了查询性能?

  2. 我应该在所有表中的所有FK列(如Products.CategoryId)上创建索引吗?

sql sql-server indexing performance foreign-keys

148
推荐指数
3
解决办法
8万
查看次数

在SQL Server中使用外键是否有严重的性能损失?

我正在尽我所能说服我的老板让我们在我们的数据库中使用外键 - 到目前为止没有运气.

他声称这需要花费大量的性能,并说我们现在只需要有工作来清理无效的引用.

显然这在实践中不起作用,并且数据库充斥着无效的引用.

有没有人知道比较,基准或类似的证明使用外键没有显着的性能影响?(我希望能说服他)

sql sql-server database-design foreign-keys

37
推荐指数
3
解决办法
2万
查看次数