gpt4 book ai didi

SQL JOIN 在哪里放置 WHERE 条件?

转载 作者:行者123 更新时间:2023-12-03 09:11:56 24 4
gpt4 key购买 nike

我有以下两个例子。

1. 示例(WHERE)

SELECT 1
FROM table1 t1
JOIN table2 t2 ON t1.id = t2.id
WHERE t2.field = true

2. 示例(JOIN AND)
SELECT 1
FROM table1 t1
JOIN table2 t2 ON t1.id = t2.id AND t2.field = true

就性能而言,什么是更快的方法?你喜欢哪个?

最佳答案

如果过滤器输入 JOIN功能上的条件(即它是一个实际的连接条件,而不仅仅是一个过滤器),它必须出现在 ON 中该连接的子句。

值得注意:

  • 如果你把它放在 WHERE相反,如果连接是 INNER,则性能相同。 ,否则不同。正如评论中提到的,这并不重要,因为无论如何结果是不同的。
  • 将过滤器放入 WHERE真正是 OUTER JOIN 的条款条件隐含地取消了 OUTER条件的性质(“即使没有记录也加入”),因为这些过滤器首先意味着必须存在现有记录。示例:
  • ... table1 t LEFT JOIN table2 u ON ... AND t2.column = 5是正确的
    ... table1 t LEFT JOIN table2 u ON ... 
    WHERE t2.column = 5

    不正确,如 t2.column = 5告诉引擎来自 t2 的记录是预期的,这与外连接背道而驰。异常(exception)情况是 IS NULL过滤器,例如 WHERE t2.column IS (NOT) NULL (这实际上是一种构建条件外连接的便捷方式)
  • LEFTRIGHT连接是隐式的 OUTER加入。

  • 希望它有所帮助。

    关于SQL JOIN 在哪里放置 WHERE 条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15483808/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com