比较MySQL交叉联接和内部联接

时间:2020-03-05 18:57:58  来源:igfitidea点击:

给定不同的数据库,配置等,每个查询的潜在利弊是什么?有没有一个时间比另一个效率更高的时间?反之亦然?有更好的方法吗?你能解释为什么吗?

查询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');

解决方案

回答

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

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

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

回答

相同的查询,不同版本的SQL规范。查询优化器应针对这些查询提出相同的查询计划。

回答

没有。我只是与一些同事共享一个庞大的,不堪重负的数据库,并且正在尝试提出一些方法来为我们带来更多收益。我一直在网上四处寻找,但对于类似这样的问题却找不到很好的解释。

很抱歉,作业听起来不错。我想我花了很多年担任助教。

回答

实际上,我认为查询2更具可读性。想一想当我们在查询1中打到where子句时要说5、6或者7个表。加入之后可能会变得混乱。

至于性能,我不知道。我敢打赌,如果我们访问MySQL网站,可能会有信息,可能有加入示例。

专业上,我只从事一个项目。但这是一个很大的问题,他们始终遵循查询2的格式。虽然这是使用Microsoft SQL Server。