tin*_*ime 10 sql optimization join where sql-execution-plan
如果我运行以下SQL查询
SELECT *
FROM A
LEFT JOIN B
ON A.foo=B.foo
WHERE A.date = "Yesterday"
Run Code Online (Sandbox Code Playgroud)
请问WHERE声明得到之前或之后的评价JOIN?
如果之后,什么是更好的方式来编写此语句,以便只返回A从中的行"Yesterday"连接到B?
语义上:在JOIN之后.但在这种情况下,时序没有区别,因为它位于JOIN的左侧.
正如你已经拥有的那样,"只有"昨天"中的A行加入了B".
优化器可以自由地重新组织其操作顺序,具体取决于关系代数中的等价.
这只返回A.date ="Yesterday"并加入B,它可以在foo上找到匹配:
SELECT * FROM A
LEFT JOIN B
ON A.foo=B.foo
WHERE A.date="Yesterday"
Run Code Online (Sandbox Code Playgroud)
这将返回所有A而不管任何条件,并加入B,其中A.date ="Yesterday"并且它在foo上找到匹配:
SELECT * FROM A
LEFT JOIN B
ON A.foo=B.foo
AND A.date="Yesterday"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8970 次 |
| 最近记录: |