语句如下:
update printmaindata set dzpl=4 where NFREEZE=1 and ACCTYPE<>'6' and idcenter='0700' and ndataid =5 and CUSTID='9440803000023545' and EXISTS (select credit from printdetaildata_08 where  ACCNO in  (select ACCNO from printmaindata where ndataid =5  and CUSTID='9440803000023545') and credit >=0 )有两个环境,一个是测试环境,一个开发环境,数据库装的都是10G,相关配置也一样,在测试机上跑,需要50多秒,但是在开发机上跑,只需要1秒多,这个是什么原因造成的呢。测试机上面EXISTS前面的更新语句执行只需要0.031秒,后面的子查询只需要0.094秒。忘高手解答。

解决方案 »

  1.   

    -- 三个方面找答案:
    -- *1) 这个SQL语句在两台机器的数据库上的执行计划一样吗?
    -- *2) 这个SQL语句涉及到的表的数据在两台机器上的数据库里一样吗?
    -- *3) 两台数据库服务器的硬件配置及数据库参数一样吗?
      

  2.   

    数据量都是一样的,内存分配也是一样的,硬件配置也差不多,我本子是I3+3g内存。测试机是P7500+2G内存
      

  3.   

    看一下计划,同一条语句在不同环境下,执行计划不一定相同的
    你用 PL SQL 按 F5 ,就能看到执行计划