SQL的逻辑判断顺序

NewSun99 2003-03-09 09:09:17
1、
在WHERE条件中,请问
where col1 = aa and col2 = bb
是不是当COL1 <> aa 的是时候,就不再判断Col2 是否等于bb了?
同样在
where col1 = aa or col2 = bb
是不是当COL1 = aa 的是时候,就不再判断Col2 是否等于bb了?
2、上面的问题是否对每个DBMS都一样,如果不一样,那么分别是怎么样的情况,
如:MSSQL,ORACLE,DB2...是什么样的?
谢谢
...全文
127 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Chiff 2003-03-11
  • 打赏
  • 举报
回复
这个问题以前讨论过,但是我记得并没有权威的结果出来。但是有一点是明确的,微软在条件判断时事先作了优化
NewSun99 2003-03-11
  • 打赏
  • 举报
回复
select A.*
from Table A,
(select B.col1,B.col2,...,B.coln from table B group by B.col1,B.col2,...,B.coln having count(1) > 1) C
where A.Col1 = C.Col1 and A.Col2 = C.Col2 and ....A.ColN = C.ColN

select A.*
from Table A
where
(select count(1)
from Table C
where A.Col1 = C.Col1 and A.Col2 = C.Col2 and ....A.ColN = C.ColN) > 1
哪个的效率高,更好的写法应该是什么?
帖子见
http://expert.csdn.net/Expert/topic/1508/1508012.xml?temp=.3553736
pengdali 2003-03-09
  • 打赏
  • 举报
回复
你可以做以下实验:

if 1=1 and exists(select 1 from pubs..jobs)
select 1
--按下F5后 ,按Ctrl+L 你会发现他去找了表
---------------------------------------------------
if 1=2 and exists(select 1 from pubs..jobs)
select 1
--按下F5后 ,按Ctrl+L 你会发现他没有去找表

--说明微软已经做了优化!
pengdali 2003-03-09
  • 打赏
  • 举报
回复
1、会的
2、应该其他的没那么笨吧!
angle1219 2003-03-09
  • 打赏
  • 举报
回复
1.and 只要一个条件不满足,算作不满足,where col1 = aa and col2 = bb
是当COL1 <> aa 的是时候,就不再判断Col2 是否等于bb了
where col1 = aa or col2 = bb
当COL1 = aa 的是时候,就不再判断Col2 是否等于bb
2.我说的是mssql,别的我没用过,应该是一样的
mymmsc 2003-03-09
  • 打赏
  • 举报
回复
这么厉害

34,593

社区成员

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

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