【发布时间】:2014-12-15 15:07:53
【问题描述】:
我注意到一些表格查询的测试数据
SELECT *
FROM a
JOIN b ON a.x = b.y
WHERE [more conditions...];
返回与表单查询相同的数据
SELECT *
FROM a,b
WHERE a.x = b.y
AND [more conditions...];
直觉上它们看起来是等价的,但我不相信会是这样。
我更喜欢使用JOIN 的查询,因为它将查询的一般结构与查询的特定业务逻辑分开。即使用JOIN 的查询的WHERE 部分中的条件是可以参数化的。
这些查询在哪些其他方面(如果有)不相同?
【问题讨论】:
-
什么数据库平台?
-
是的,在大多数 RDBMS 中,它们不仅会返回相同的记录,还会具有完全相同的执行路径。
-
@PatrickHofman 我在 MySQL 中使用 ISAM 表,但我对所有适用平台和引擎的答案感兴趣。
-
@AndrewMartin 仅供参考,你搜索 lyk 笛卡尔积 vs 内部也加入这个
标签: sql performance join syntactic-sugar equivalent