合并加入笛卡尔总是危险的吗?
我有很多查询,成本从 7 到 40 不等,但遵循合并加入笛卡尔来执行。
当我的查询成本较低时,我真的应该担心 Merge Join cartesian 吗?
我真的需要这方面的帮助。
任何帮助是极大的赞赏。
谢谢,
萨维莎
最佳答案
笛卡尔连接通常表示您在某处错过了连接,这是不好的,因为您的结果不是您所期望的,并且查询可能会比它应该花费的时间长得多。
然而,情况并非总是如此。假设您有两个相对较小的表,每个表都过滤到一行。这两个表将连接到两个不同列上的更大的表,这两个列都在同一个索引中。在这种情况下,优化器可能会决定对两个小结果集进行笛卡尔连接,因为结果数据集可以更有效地使用较大表上的索引。
简而言之,如果您在您的计划中看到笛卡尔连接,您可能应该仔细查看并尝试了解优化器选择该路线的原因。可能是因为您发现了一个尚未引起问题的错误,或者它确实只是最好的计划,但您必须分别为每个查询做出决定,因此您可以避免在路上头痛。
关于performance - 合并加入笛卡尔,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7764314/