数据库:JOIN vs Cartesian Product

时间:2015-08-04 10:06:27

标签: mysql database

我真的很想知道,与笛卡尔积相比,使用JOIN是否有任何性能增益用于等效的SQL查询。

或者连接只是笛卡尔积的语法糖。

任何人都可以让我知道笛卡尔积和JOIN的实现。 执行方式是否同时具有相同的时间复杂性。或者实现因数据库而异。

我已阅读以下帖子,但似乎仍然存在拆分意见:

Performance of Inner Join vs Cartesian product

Explicit vs implicit SQL joins

2 个答案:

答案 0 :(得分:0)

无法发表评论,而不是足够的代表。但笛卡尔积提供所有列,而不是您特别需要的列。这不会导致数据库出现性能问题,但是当您开始使用数据时,可能需要额外的工作来格式化您需要向最终用户显示的内容,从而导致代码中出现性能问题。随着数据库的增长,我可以避免使用笛卡尔,并且可能会扩展,可以引入错误。

答案 1 :(得分:0)

我可能完全错了,但这是我的观点。在一些大学数据库类中,它们指的是将OP描述的表连接为笛卡尔连接的方法,因为基于矩阵或向量的cartisian乘积,而不是显式连接子句,这可能是OP引用的原因。 。数学是被召回的计算机的基础,它被用于SQL语言的词汇和逻辑规范,特别是关系代数和关系演算。我们在大学里面学习SQL,而不是说行业术语。我认为这是学术界和工业界之间脱节的原因,理论与基于趋势商业实践的市场/可销售应用之间的脱节。我认为,除非出于各种原因与商业相关的课程,否则将业务纳入学术界并不是一个好主意。也许,一点谦逊将有助于人类朝着更大的启蒙和进步迈进。最伟大的思想引用了许多关于用我们的知识感等创造的幻想的引用;不受限制和严格的理解。