返回信息流比如:
select * from A JOIN B ON A.id=B.id
和
select * from A,B WHERE A.id=B.id
用EXPLAIN 看不出区别。。help~
这是一条镜像帖。来源:北邮人论坛 / database / #5240同步于 2011/2/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖
求这两句SQL的区别
VisualUUBALL
2011/2/25镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
这两种形式在 生成 parse tree 的时候会有不一样, 但是对 调优器来说 是一样的,
另外 on 后面只能接 join 的 predicate , 无法接 local predicate.
类似于 编程规范一样, join predicate 最好写在 on 后面,这样,就能够清楚地区分出 join predicate 和 local predicate.
不排除 数据库 有一些 bug 在 某种特定情况下,导致 查询 计划不一致,当然这个一般也很难遇到。
【 在 VisualUUBALL 的大作中提到: 】
: 比如:
: select * from A JOIN B ON A.id=B.id
: 和
: ...................
我猜执行效率可能不一样~
是说这个贴吗
对于内连接(或简单表连接),只在结果中包含根据连接谓词所匹配的行。因此,没有包含那些不匹配的行。
ON 子句中的谓词或者连接时的谓词没有限制返回结果行数;它们只限制了哪些行可以被连接。只有 WHERE 子句的谓词限制了真正检索到的行数
【 在 VisualUUBALL (VisualUUBALL) 的大作中提到: 】
: 比如:
: select * from A JOIN B ON A.id=B.id
: 和
: ...................