0

我有一个看起来像这样的表结构:

Id  

人口统计

Id  
PersonId

Person > PersonDemographic是一对一的关系,并且通过对 的唯一约束被迫如此PersonDemogrphic.PersonId

这种结构遍及这个特定的数据库。因此,任何从 Person 到包含人员详细信息的表的连接都包括哈希匹配和表扫描。

为了优化查询,我尝试将人员 ID(而不是表身份)作为聚集主键。这导致了嵌套循环和聚集索引扫描(以及轻微的性能改进)。

知道这是一对一的关系,我想我可以通过给 joinFORCESEEK提示来提高性能;然而,这使情况变得更糟。根据执行计划中的统计数据,“反向关系”表上的聚集索引搜索似乎仍在每行执行一次运算符,而不是“通常相关”表的执行,估计执行次数为1.

我正在寻找建议以获得针对这种情况的最佳执行计划。虽然我意识到“修复你的表结构”是有效的并且可能是最好的答案,但我希望在这个时候避免这种情况。

谢谢!

4

1 回答 1

0

您是否尝试过使用外键而不是唯一约束?

于 2013-01-10T15:49:22.873 回答