免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4843 | 回复: 2
打印 上一主题 下一主题

请教:update的两个问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-22 11:18 |只看该作者 |倒序浏览
描述: 两张表: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),有达人知道原因吗?

论坛徽章:
0
2 [报告]
发表于 2007-05-23 14:21 |只看该作者
目前还没人回答,自己再顶一下

论坛徽章:
0
3 [报告]
发表于 2007-05-24 21:19 |只看该作者
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)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP