合并加入CARTESIAN

时间:2011-10-14 07:21:11

标签: performance oracle sql-tuning

Merge加入CARTESIAN总是危险吗?

我有很多查询,费用从7到40不等,但请遵循合并加入笛卡儿来执行。

当我的查询费用较低时,我是否应该真的打扰合并加入笛卡儿?

我真的需要帮助。

非常感谢任何帮助。

谢谢, Savitha

1 个答案:

答案 0 :(得分:7)

笛卡尔联接通常表示您错过了某个地方的联接,这很糟糕,因为您的结果不符合您的预期,而且查询可能会花费比预期更长的时间。

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

简而言之,如果您在计划中看到笛卡尔联接,您应该仔细研究并尝试理解优化程序选择该路线的原因。可能是因为您发现了一个尚未引起问题的错误,或者它可能确实只是最好的计划,但您必须单独为每个查询做出决定,这可能会让您自己头疼。