关于WHERE条件对性能的影响?

jiayc 2006-07-05 03:13:17
关于WHERE条件对性能的影响?
有这样两个语句:

select * from test where a and b and c and (d or e)

select * from test where (a and b and c and d) or (a and b and c and e )

请问这两条语句的原理、效率是不是一样的呢? 有没有理论来证明呢?
...全文
819 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
shengli_liao 2006-10-20
  • 打赏
  • 举报
回复
这个问题要涉及到具体的数据库,不同的数据库有不同的优化机制。
where str='string' and id = 2
和 where id = 2 and str='string'
在不同的数据库中执行时间可能不同。
多测试后发言。
aimcy 2006-09-06
  • 打赏
  • 举报
回复
建议用union all,or可能导致索引不可用
tongshushan 2006-09-04
  • 打赏
  • 举报
回复
第一个高些吧,
不管怎样你都会写成第一种形式的,因为其写法更适合思维逻辑.
  • 打赏
  • 举报
回复
楼主怎么失踪了,有没有实验实验?
houxp666 2006-09-01
  • 打赏
  • 举报
回复
做一个sql_trace或者autotrace不就知道了吗?执行计划和各个阶段的性能指标都清楚的很,没什么好估计的。
abc_sk 2006-08-31
  • 打赏
  • 举报
回复
,,
specialsoldier 2006-08-25
  • 打赏
  • 举报
回复
优化器分析该语句的时候,可能第一种比较省时间,但是真正执行的时候时一样的,因为执行计划一样.
bluesky23 2006-08-25
  • 打赏
  • 举报
回复
up
wiler 2006-08-22
  • 打赏
  • 举报
回复
带or的效率不高
建议改为
select * from test
where a and b and c and d
union all
select * from test
where a and b and c and e
iihero 2006-08-20
  • 打赏
  • 举报
回复
无定论,最好看一下数据量,做一下执行计划就可以。
如果只按规则,后者在理论上确实要好一些。
  • 打赏
  • 举报
回复
从表达式计算次数上,第一种次数要少些.记录数量多时,多一两次计算就会省出不少时间
qinhl99 2006-08-14
  • 打赏
  • 举报
回复
一般的select * from test where (a and b and c and d) or (a and b and c and e )的效率要高
hbwhwang 2006-08-08
  • 打赏
  • 举报
回复
每个数据库的做法可能都不一样。
ABCatai 2006-08-03
  • 打赏
  • 举报
回复
hean 2006-07-22
  • 打赏
  • 举报
回复
最关键还是要看索引
hean 2006-07-22
  • 打赏
  • 举报
回复
第二句效率高,因为限定的条件更多
XiXiangHou 2006-07-13
  • 打赏
  • 举报
回复
请学习一下执行计划等数据库方面知识。
按照道理数据库都能按照最优的方式进行。

如果执行计划相同,性能应当差不多。
TERRYYRRET 2006-07-13
  • 打赏
  • 举报
回复
应该差不多
zhuangyan2004 2006-07-12
  • 打赏
  • 举报
回复
写个程序测试一下嘛
羽佳0627 2006-07-10
  • 打赏
  • 举报
回复
任何数据库都会有优化查询的机制,除非改变条件语句执行的顺序才会影响性能,比如连接多个表的查询和嵌套自查询都可以得到同样的结果集,但由于子查询和联合查询中子句执行的顺序不同就会产生性能差异,在SQL Server里面可以察看执行计划,一目了然那些步骤消耗的性能更多
加载更多回复(2)

256

社区成员

发帖
与我相关
我的任务
社区描述
其他产品/厂家
社区管理员
  • 其他
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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