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

我有很多查询,成本从 7 到 40 不等,但遵循合并加入笛卡尔来执行。

当我的查询成本较低时,我真的应该担心 Merge Join cartesian 吗?

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

任何帮助是极大的赞赏。

谢谢,
萨维莎

最佳答案

笛卡尔连接通常表示您在某处错过了连接,这是不好的,因为您的结果不是您所期望的,并且查询可能会比它应该花费的时间长得多。

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

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

关于performance - 合并加入笛卡尔,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7764314/

10-12 06:17