就以下的代码:插入1000多条记录到一个表里竞要十多秒!!救命!!!!
INSERT INTO HR_KQTempForInitData(EMPID,CARDDATE,CARDTIME,CARDNO) 
SELECT tbl1.EMPID,tbl2.CARDDATE,tbl2.CARDTIME,tbl2.CARDNO 
FROM HR_KQTempForEMP tbl1 LEFT JOIN hr_kqdata tbl2 
ON tbl1.EMPID=tbl2.IDEMPLOYEE AND tbl2.ISIMPORT='Y' AND tbl2.ISRUN='N'  
JOIN HR_KQMACHINE tbl3 
ON tbl2.MACHINENO=tbl3.NO 
WHERE  TO_DATE(tbl2.CARDDATE,'YYYY-MM-DD') 
       BETWEEN dbegindailydate AND denddailydate 
       AND length(TRIM(tbl2.CARDDATE))>0 
   AND tbl3.ISTIME='N' AND tbl3.ISREPAST='N' 
   AND tbl3.IDMACHINE>0 
   AND tbl1.KQ_YN='Y';这分部数据查询不到一秒.
SELECT tbl1.EMPID,tbl2.CARDDATE,tbl2.CARDTIME,tbl2.CARDNO 
FROM HR_KQTempForEMP tbl1 LEFT JOIN hr_kqdata tbl2 
ON tbl1.EMPID=tbl2.IDEMPLOYEE AND tbl2.ISIMPORT='Y' AND tbl2.ISRUN='N'  
JOIN HR_KQMACHINE tbl3 
ON tbl2.MACHINENO=tbl3.NO 
WHERE  TO_DATE(tbl2.CARDDATE,'YYYY-MM-DD') 
       BETWEEN dbegindailydate AND denddailydate 
       AND length(TRIM(tbl2.CARDDATE))>0 
   AND tbl3.ISTIME='N' AND tbl3.ISREPAST='N' 
   AND tbl3.IDMACHINE>0 
   AND tbl1.KQ_YN='Y';
请朋友指点!!

解决方案 »

  1.   

    insert /*+APPEND*/ into  HR_KQTempForInitData ...
    看看HR_KQTempForInitData是否有许多索引,和本身服务器资源比较忙
      

  2.   

    HR_KQTempForInitData表索引字段EMPID,CARDDATE,CARDTIME.应该不会有这么慢吧!!!!!!
      

  3.   

    如果HR_KQTempForInitData本身有许多数据,同时又有许多索引的话,速度是会慢一些
      

  4.   

    >>这分部数据查询不到一秒如果你用plsql developer之类的工具,他可能默认查询的是top20之类的