毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 数据库 >> 正文

oracle的select_insert超慢

更新时间:2012-9-17:  来源:毕业论文

insert into e_rel_customer(
CUSTOM_ID  
,REL_CUSTOM_ID  
,REL_ID  
,CUSTOM_NAME  
,idtype_id  
)
select
 fun_getcustid(CUSTOMERID) as CUSTOMERID
,fun_getcustid(RELATIVEID) as RELATIVEID
,RELATIONSHIP
, CUSTOMERNAME
,CERTTYPE
from xd_CUSTOMER_RELATIVE;
function :
fun_getcustid 为 
  select nvl(MFCUSTOMERID,'') into refstr from SOR_XD_CUSTOMER_INFO where MFCUSTOMERID is not null and CUSTOMERID=trim(var) and rownum=1;
表xd_CUSTOMER_RELATIVE 有108029条记录
表SOR_XD_CUSTOMER_INFO 73047条记录
这个语句执行下来要半个小时,为什么啊
在此列上建索引,看看效率:MFCUSTOMERID,CUSTOMERID
最少返回数据应该是 108029 行
试试这个,function执行次数太多了,大概这个意思

SQL code
insert into e_rel_customer(
CUSTOM_ID  
,REL_CUSTOM_ID  
,REL_ID  
,CUSTOM_NAME  
,idtype_id  
)
SELECT T1.MFCUSTOMERID AS CUSTOMERID,
       T2.MFCUSTOMERID AS RELATIVEID,
       RELATIONSHIP,
       CUSTOMERNAME,
       CERTTYPE
  FROM XD_CUSTOMER_RELATIVE,
  LEFT JOIN (SELECT NVL(MAX(MFCUSTOMERID), '') MFCUSTOMERID, CUSTOMERID
               FROM SOR_XD_CUSTOMER_INFO
              WHERE MFCUSTOMERID IS NOT NULL
              GROUP BY CUSTOMERID) T1
       ON T1.CUSTOMERID = XD_CUSTOMER_RELATIVE.CUSTOMERID
  LEFT JOIN (SELECT NVL(MAX(MFCUSTOMERID), '') MFCUSTOMERID, CUSTOMERID
               FROM SOR_XD_CUSTOMER_INFO
              WHERE MFCUSTOMERID IS NOT NULL
              GROUP BY CUSTOMERID) T2
       ON T2.CUSTOMERID = XD_CUSTOMER_RELATIVE.RELATIVEID

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。