in 和 not in 的优化

SambaGao 2010-04-17 05:45:15
select count(*) from where c01d27 IN ('2', '8')

select count(*) from where c01d27='2' or c01d27='8'


SQL> select count(*) from c01d where c01d27='2' or c01d27='8';
Executed in 0.531 seconds
Executed in 0.515 seconds
Executed in 0.515 seconds
SQL> select count(*) from c01d where c01d27 IN ('2', '8');
Executed in 0.547 seconds
Executed in 0.516 seconds
Executed in 0.547 seconds

能看出来好一点...

select count(*) from where c01d26 NOT IN ('2025', '2027', '2029') ;

下周接着测下班了。....

...全文
207 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dracula_li 2010-04-19
  • 打赏
  • 举报
回复
好 支持
永生天地 2010-04-19
  • 打赏
  • 举报
回复
用union试试
select count(*) from where c01d27='2'
unoin all
select count(*) from where c01d27='8'
浪子不再独行 2010-04-19
  • 打赏
  • 举报
回复
楼主问的只有两个数据,in 与 or的速度可能差别不是很大。如果in中的数据多的话可能要考虑使用exists而不是in或or了。
浪子不再独行 2010-04-19
  • 打赏
  • 举报
回复
子查询中的数据多的时候使用exists/ not exists,子查询中数据少的时候用in/ not in,我的理解应该是这样子吧。
Leshami 2010-04-18
  • 打赏
  • 举报
回复
not in时候和not exists时有些差异
not in (NULL) 为true
not exists(NULL) 为false
小灰狼W 2010-04-18
  • 打赏
  • 举报
回复
数据量太小,不能说明问题。相差的0.01秒可以归结到误差上
理论上说应该是一样的
wojiaochenglong 2010-04-18
  • 打赏
  • 举报
回复
受教了
huanmie_09 2010-04-18
  • 打赏
  • 举报
回复
up!
iqlife 2010-04-17
  • 打赏
  • 举报
回复
这2个的区别不是很明白,学习来了,只知道如果数据量很大的话,可以采用NOT EXIST
tangren 2010-04-17
  • 打赏
  • 举报
回复
就楼主这个来看,没明显区别!
duqiangcise 2010-04-17
  • 打赏
  • 举报
回复
楼主想说明啥?

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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