比较MySQL Cross和Inner Joins

时间:2008-09-17 04:59:58

标签: mysql sql

在给定不同数据库,配置等的情况下,每个查询的潜在优缺点是什么?有没有一个人比另一个人更有效率?反之亦然?有没有更好的方法呢?你能解释一下原因吗?

查询1:

SELECT 
  *
FROM
  table_a, table_b, table_c
WHERE
  table_a.id = table_b.id AND
  table_a.id = table_c.id AND
  table_a.create_date > DATE('1998-01-01');

查询2:

SELECT 
  *
FROM
  table_a 
INNER JOIN table_b ON
  table_a.id = table_b.id
INNER JOIN table_c ON
  table_a.id = table_c.id
WHERE
  table_a.create_date > DATE('1998-01-01');

4 个答案:

答案 0 :(得分:2)

相同的查询,不同的SQL规范修订版。查询优化器应为这些查询计划提出相同的查询计划。

答案 1 :(得分:0)

不。我只是与一些同事共享一个庞大的,不堪重负的数据库,我正试图想出一些方法来获得更多处理器爆炸。我一直在网上寻找,但没有找到一些像这样的问题的好解释。

对不起听取作业-y。我想我花了太多年时间作为TA。

答案 2 :(得分:0)

实际上,我认为查询2更具可读性。想想当你点击查询一中的where子句时,你会说5,6或7个表。加入后可能会变得混乱。

至于表现,我不知道。我敢打赌,如果你去MySQL网站,那里会有信息 - 可能是连接的例子。

专业上,我只参与过一个项目。但这是一个很大的问题,他们总是遵循查询2的格式。这是使用Microsoft SQL Server。

答案 3 :(得分:-1)

我同意,这听起来有点像家庭作业!

如果不是家庭作业,那么我想最简单的答案就是可读性。

如前所述,两个查询都将生成相同的执行计划。如果是这种情况,那么您唯一需要担心的是可维护性。