3

合并加入笛卡尔总是危险的吗?

我有许多查询,成本从 7 到 40 不等,但遵循合并连接笛卡尔执行。

当我的查询成本较低时,我真的应该为 Merge Join 笛卡尔而烦恼吗?

我真的需要这方面的帮助。

任何帮助是极大的赞赏。

谢谢,萨维莎

4

1 回答 1

7

笛卡尔连接通常表明您在某处错过了连接,这很糟糕,因为您的结果不会是您所期望的,并且查询可能会花费比预期更长的时间。

然而,情况并非总是如此。假设您有两个相对较小的表格,每个表格要过滤为一行。这两个表都将在两个不同的列上连接到一个更大的表,这两个列都在同一个索引中。在这种情况下,优化器可能决定笛卡尔连接两个小结果集,因为结果数据集可以更有效地使用较大表上的索引。

简而言之,如果您在计划中看到笛卡尔连接,您可能应该仔细查看并尝试了解优化器选择该路线的原因。可能是因为您发现了一个尚未导致问题的错误,或者它确实只是最好的计划,但您必须为每个查询分别做出决定,从而使您在路上免于头疼。

于 2011-10-14T13:37:04.207 回答