Merge加入CARTESIAN总是危险吗?
我有很多查询,费用从7到40不等,但请遵循合并加入笛卡儿来执行。
当我的查询费用较低时,我是否应该真的打扰合并加入笛卡儿?
我真的需要帮助。
非常感谢任何帮助。
谢谢, Savitha
答案 0 :(得分:7)
笛卡尔联接通常表示您错过了某个地方的联接,这很糟糕,因为您的结果不符合您的预期,而且查询可能会花费比预期更长的时间。
然而,并非总是如此。假设您有两个相对较小的表,每个表都要过滤为一行。这两个表都将连接到两个不同列上的更大的表,这两个列都在同一索引中。在这种情况下,优化器可能决定将笛卡尔连接到两个小结果集,因为结果数据集可以更有效地使用较大表上的索引。
简而言之,如果您在计划中看到笛卡尔联接,您应该仔细研究并尝试理解优化程序选择该路线的原因。可能是因为您发现了一个尚未引起问题的错误,或者它可能确实只是最好的计划,但您必须单独为每个查询做出决定,这可能会让您自己头疼。