为了账号安全,请及时绑定邮箱和手机立即绑定

在MySQL查询中,为什么使用联接而不是在哪里?

在MySQL查询中,为什么使用联接而不是在哪里?

繁星coding 2019-07-27 15:15:54
在MySQL查询中,为什么使用联接而不是在哪里?似乎要组合两个或多个表,我们可以使用联接或位置。两者的优势是什么?
查看完整描述

3 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

以下是使用WHERE语法(其他明智的方法称为隐式联接)的问题:

首先,很容易获得偶然的交叉连接,因为联接条件不在表名旁边。如果将6个表连接在一起,则很容易忽略WHERE子句中的一个表。通过使用DISTINCT关键字,您将经常看到这个问题。这对数据库来说是一个巨大的性能打击。使用显式联接语法不能意外地获得交叉连接,因为它将不通过语法检查。

在某些数据库中,在旧的语法中,向右和向左联接是有问题的(在SQL Server中,不能保证得到正确的结果)。此外,我所知道的SQL Server中也不推荐它们。

如果您打算使用交叉联接,则旧语法不清楚这一点。显然,使用目前的ANSII标准。

对于维护者来说,更难看出哪些字段是联接的一部分,甚至是哪些表使用隐式语法以何种顺序连接在一起。这意味着修改查询可能需要更多时间。我认识的人很少,一旦他们花时间对显式联接语法感到舒服,就会回到原来的方式。

我还注意到,一些使用这些隐式联接的人实际上并不了解联接是如何工作的,因此在他们的查询中得到了不正确的结果。

老实说,你是否会使用18年前被一种更好的方法取代的其他类型的代码呢?




查看完整回答
反对 回复 2019-07-28
?
手掌心

TA贡献1942条经验 获得超3个赞

大多数人倾向于更清楚地发现连接语法是与什么连接的。此外,它的好处是成为一个标准。

就我个人而言,我是在哪里“长大”的,但是我越多地使用连接语法,我就越开始了解它是如何变得更加清晰。



查看完整回答
反对 回复 2019-07-28
  • 3 回答
  • 0 关注
  • 303 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信