请教:update的两个问题
描述: 两张表:t1(字段:a,b,c,d),t2(字段:a,b,c),字段均为char型,两表的主键均为: a, b组成的联合主键。现在,t2表c字段的值发生了变化,需要用t2表各记录的c字段更新t1表中相应记录的c字段。我的sql为:
update t1
set c= ( select t2.c from t2 where t2.a=t1.a and t2.b=t1.b )
where t1.a || t1.b in
( select t2.a || t2.b
from t2
where t2.a=t1.a
and t2.b=t1.b
)
问题:
1.目前的sql语句从逻辑上讲是对的,但是感觉不够优化,且在大数据量的情况下执行时效率非常低,请各位帮忙,看看该sql是否能有更好的写法或其他的实现方式;
2.相同的数据量,该update语句在informix9.4上比informix 7.31上明显慢(硬件、informix参数基本相同,只是操作系统一个为linux另一个为sco 5.0.6),有达人知道原因吗? 目前还没人回答,自己再顶一下 have a try
update t1
set c= ( select t2.c from t2 where t2.a=t1.a and t2.b=t1.b )
where exists (select 1 from t2 where t2.a=t1.a and t2.b=t1.b)
页:
[1]