oracle in语句的用法,oraclein语句

Oracle语句中IN和=的区别有哪些

Oracle语句中IN和=的区别有:

1、首先应用范围不一样:in 可以理解为是范围内的选择;= 只有一个。例如:

select sno, sname from t1 where sno in ('sn1001','sn1002');

select sno, sname from t1 where sno in ('sn1001');

select sno, sname from t1 where sno ='sn1001';

select sno, sname from t1 where sno in (select sno from t2); --子查询结果可以不止一个结果

select sno, sname from t1 where sno =(select sno from t2); --子查询结果只能有一个。

2、其次性能也不一样;=的性能大于in的性能,因为=能较好的使用索引等。

3、in 表示在一个结合内进行查询,比如 select * from character where letter in ('A','B','C')。

=的作用就是一个值的比较。但是等号也可以实现in的效果,只是写起来比较麻烦。比如上面的例子,也可以这样写:

select * from character where letter='A' or letter='B' or letter='C'.

两个运算符都比较常用,根据具体的情况选择。

oracle ,IN的改写

1、增加索引,对c.NO、y.NO和t.NO字段都增加索引。

2、不要用IN,用EXITS :

update y set y.zt=(select c.zt from c where c.NO=y.NO) where exits (select 1 from t where t.NO = y.NO );

效率会比用IN的语句高。如果例子中C表和T表是同一个表,建议增加筛选之更新那些ZT字段不相同的数据,这样会提高一些效率。

3、使用游标分批次的修改数据,因为一个UPDATE更新的数据量过大,会导致大量的回滚段占用,分批次更新可以更好的利用资源。而且可以控制在一次更新中断后从中断的位置继续向下更新。避免更新失败等问题发生;

4、使用临时表,把需要更新的数据筛选出来,再编写更新语句,这只是3或者4的一种变化而已。看个人习惯,这么做的优点是可以把临时表的数据作为一个备份,避免以后数据变化后无法得知当初的更新结果。

怎么在oracle的查询语句中的in后用变量

要想在in中用变量,需要用动态SQL,请看下例子,我在oracle 10g中测试通过:

declare

v_1 varchar2(100);

v_2 varchar2(200);

begin

v_1:='(''1'',''2'',''3'')';

v_2:='insert into testa2 select * from testa1 where fch in'|| v_1;

execute immediate v_2;

commit;

end;

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值