|
|
1
5
嗯,这是操作顺序。。
在您的第二个示例中,您首先将t1与t2进行INNER JOIN,然后在table2_ID=table1_ID的条件下将结果与表t3进行LEFT JOIN。
可以改写为:
编辑 我道歉。我的第一句话错了。这两个查询将产生相同的结果,但性能可能存在差异,因为在某些情况下(当表1仅包含表2中元素的子集时),第一个查询的执行速度可能比第二个查询慢,因为LEFT JOIN将首先执行,然后才与表1相交。与第二个查询相反,它允许查询优化器完成自己的工作。 |
|
2
4
对于您的具体示例,我认为生成的查询计划不应该有任何差异,但可读性肯定有差异。你的第二个例子更容易理解。
基于连接的顺序在许多情况下确实很重要的事实,应该仔细考虑如何编写连接语法。如果你发现第二个例子是你真正想要实现的,我会考虑重写查询,这样你就可以更强调连接的顺序。..
|
|
|
3
2
这些结果集没有差异 如果 我在数据库上尝试了它,查询计划的不同之处在于 |
|
|
4
0
|
|
|
Johnny T · 基于当前值的SQL合并表[重复] 1 年前 |
|
John D · 需要为NULL或NOT NULL的WHERE子句 1 年前 |
|
ojek · 如何对SQL结果进行分组和编号? 1 年前 |
|
|
senek · 如何在PL/SQL中将选择结果(列)放入数组中 1 年前 |
|
|
Sax · 规范化Google表格(第一步) 1 年前 |
|
|
Jatin · 检索卷计数的动态sql抛出错误语法错误[关闭] 1 年前 |
|
|
Andrus · 如何在sql中查找第二个匹配项 1 年前 |