where与on,谁的优先级高。

vaccum 2003-03-21 11:12:16
where与on,谁的优先级高。您确定吗?
...全文
201 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yoki 2003-03-21
  • 打赏
  • 举报
回复
to:happydreamer(黑DD)
我觉得你的例子中2个显然是不一样的
因为第2个多了一个内连接(在判断where的时候)
yonghengdizhen 2003-03-21
  • 打赏
  • 举报
回复
to
“先ON,后WHERE。”

能否说明依据的出处?

从查询引擎的实现角度来说,应该这样..
因为where子句中有可能引用连接产生的结果.如果不在处理连接之后再处理筛选是无法实现的.
从效率上来说连接查询的连接条件必须优先处理,否则产生连接的笛卡尔积用于随后的处理会导致查询的低效率..
hillhx 2003-03-21
  • 打赏
  • 举报
回复
应该是一样的
vaccum 2003-03-21
  • 打赏
  • 举报
回复
“先ON,后WHERE。”

能否说明依据的出处?
HawaiiLeo 2003-03-21
  • 打赏
  • 举报
回复
先ON,后WHERE。
vaccum 2003-03-21
  • 打赏
  • 举报
回复
查不到,MS官方有说明吗?或者ANSI SQL有说明吗?
pengdali 2003-03-21
  • 打赏
  • 举报
回复
SQL会优化的按说是on
愉快的登山者 2003-03-21
  • 打赏
  • 举报
回复
先ON,后WHERE。
19191919 2003-03-21
  • 打赏
  • 举报
回复
是吗?我觉得是一样的。
happydreamer 2003-03-21
  • 打赏
  • 举报
回复
SELECT * FROM table1 a left outer join table2 b on a.jmsbh=b.jmsbh and b.scbz<>2
SELECT * FROM table1 a left outer join table2 b on a.jmsbh=b.jmsbh where b.scbz<>2

这两句话效果是不一样的,用了left join之后不管怎样对左边的表数据都会显示出来,但也受到where条件的限制.第一句的意思是先把dwpdb表里的scbz=2的先过滤掉之后再同gczjzxdwshspb外联, 而第二句的意思则是先外联再过滤,那显然是不一样的
大健 2003-03-21
  • 打赏
  • 举报
回复
学习
kangancn 2003-03-21
  • 打赏
  • 举报
回复
它们不是逻辑运算,不存在先后
w_rose 2003-03-21
  • 打赏
  • 举报
回复
跟优先级没有关系。

把我搞乱了,自然没有答案。

SQL Server对于在where后边的条件,会做一些查询优化。但是SQL Server的查询优化步骤不是可有可无的,用“优先级”来解释查询的内部动作不会有确定的结果。

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧