update yw_zjsysyb set syzt = '2',ywbh = '320000403451451',x   =(select zwxm from yw_cj_hgtsqxxb where ywbh = '320000403451451', sfzh = (select sfzh from yw_cj_hgtsqxxb where ywbh = '320000403451451') where zjzl = '98' and zjhm = '12345'
这句在PL/SQL里执行很长时间,谁能帮优化一下,让其运行快点?(YWBH 是yw_cj_hgtsqxxb 的主键,ZJZL, ZJHM是 yw_zjsysyb 的主键)

解决方案 »

  1.   


    -----这样试下。。
    update yw_zjsysyb
       set (syzt, ywbh, x, sfzh) = (select '2', '320000403451451', zwxm, sfzh
                                      from yw_cj_hgtsqxxb
                                     where ywbh = '320000403451451')
     where zjzl = '98'
       and zjhm = '12345'
      

  2.   

    能用 set = ,那说明 select 的结果是唯一的吧
    直接手工把那2个值查出来 zwxm,sfzh,再update 时,把值写死不就好了?
      

  3.   

    各个sql语句查找一下原因:
    1、select zwxm from yw_cj_hgtsqxxb where ywbh = '320000403451451';2、select sfzh from yw_cj_hgtsqxxb where ywbh = '320000403451451'3、select * from yw_zjsysyb where zjzl = '98' and zjhm = '12345'另外查询的时候不要多吃查询
      

  4.   

    --看看这样 减少子查询试试update yw_zjsysyb set (syzt,ywbh,x,sfzh)
                                          =(select '2','320000403451451',zwxm,sfzh from yw_cj_hgtsqxxb where ywbh= '320000403451451')where zjzl = '98' and zjhm = '12345'