作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
下面两种方式做的子句有什么区别?
SELECT * FROM table1 INNER JOIN table2 ON (
table2.col1 = table1.col2 AND
table2.member_id = 4
)
我将它们与基本查询和EXPLAIN EXTENDED
进行了比较,没有发现任何区别。我想知道这里是否有人发现了更复杂/处理密集型环境中的差异。
SELECT * FROM table1 INNER JOIN table2 ON (
table2.col1 = table1.col2
)
WHERE table2.member_id = 4
最佳答案
使用 INNER 连接,这两种方法给出相同的结果,并且应该产生相同的查询计划。
但是,JOIN(描述两个表之间的关系)和 WHERE 子句(从结果集中删除行)之间存在语义差异。这种语义差异应该告诉您使用哪一个。虽然它对结果或性能没有影响,但选择正确的语法将有助于您的代码的其他读者更快地理解它。
请注意,如果您使用外连接而不是内连接,可能会有所不同。例如,如果您将 INNER 更改为 LEFT 并且连接条件失败,如果您使用第一种方法,您仍然会得到一行,但如果您使用第二种方法,它将被过滤掉(因为 NULL 不等于 4)。
关于MySQL Join 子句与 WHERE 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4160637/
我是一名优秀的程序员,十分优秀!