or 与 in 的性能问题

hovy_yang 2012-05-21 06:47:12
select * from test where sno in (1,2);
select * from test where sno = 1 or sno = 2;

求教一下这两句,那个性能高一点
...全文
279 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
简即美 2012-05-23
  • 打赏
  • 举报
回复
如果只有两个的话 其实优化器会把它优化成一样的
小飛不想飛 2012-05-22
  • 打赏
  • 举报
回复
我觉得差不多,主要还是取决于两边的数据,如果in里面的数据量大的话,in的执行效率也是不高的,or也是一样。
槑党--一缕风 2012-05-22
  • 打赏
  • 举报
回复
感觉2个没什么差别,速度可能还是exists快
  • 打赏
  • 举报
回复
用exists效率高
hovy_yang 2012-05-22
  • 打赏
  • 举报
回复
怎么看执行计划,两个是一样的好像,我是F5看的
kingkingzhu 2012-05-22
  • 打赏
  • 举报
回复
1k多个 你还真去用啊 太坑爹了饿
个人感觉这个没必要纠结 关键时候还得看执行计划
rocky_2012 2012-05-22
  • 打赏
  • 举报
回复
数据量大才有区别
hovy_yang 2012-05-22
  • 打赏
  • 举报
回复
查资料好像说in括号里的条件最多一千个,但是or就没有限制。
a494910091 2012-05-21
  • 打赏
  • 举报
回复
楼上有两个 说 in 的 ,我稍微的测试了下,正好手里有个表
环境 centos6/10.2, 测试表 1000w数据,查询列 无索引 测试结果如下:

select t.tradeno from confirm t where tradeno = '00694120006462430' --21s 21s 24s
or tradeno= '00634260006835323' or tradeno='00634520003458509';

select t.tradeno from confirm t where tradeno in('00694120006462430','00634260006835323','00634520003458509'); --24s 36s 30s


查询结果并无很大诧异,or 稍微快一点点。
ps:这个不一定能说明什么问题(考虑全面问题)
kingkingzhu 2012-05-21
  • 打赏
  • 举报
回复
感觉是in 没测试
这种语句没必要纠结
wuhaitoapual 2012-05-21
  • 打赏
  • 举报
回复
用in 的效率高一点吧

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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