向Oracle数据库插入数据采用批处理更新的方式,但速度很慢,经查看,主要的Updatebatch语句的执行慢,请问有什么改进的方法吗,具体代码如下:  Set cnn = New ADODB.Connection
  cnn.Open "DSN=" & str1, str2, str3
  Set rs_section = New ADODB.Recordset
  Set rs_link = New ADODB.Recordset
  
  sqlstr1 = "select * from " & str4 & " where 1=0"
  rs_section.CursorLocation = adUseClient
  rs_section.Open sqlstr1, cnn, adOpenStatic, adLockBatchOptimistic
  rs_section.ActiveConnection = Nothing
   For i = 1 To jn
     
     
      For j = 1 To jsl(i).n
        rs_section.AddNew        
        rs_section.Fields(1) = jsl(i).gridn & jsl(i).linkN
        '--------------------------------------------------------------改变时间格式
        rs_section.Fields(2) = jsl(i).level
        rs_section.Fields(3) = jsl(i).jsects(j).time
        
        rs_section.Fields(4) = jsl(i).n
        rs_section.Fields(5) = jsl(i).jsects(j).lev
        rs_section.Fields(6) = jsl(i).jsects(j).s
        rs_section.Fields(7) = jsl(i).jsects(j).l
        rs_section.Update
        
      Next j
          
  Next i
  rs_section.ActiveConnection = cnn
  rs_section.UpdateBatch
  rs_section.Close

解决方案 »

  1.   

    我采用分批处理,但效果不太明显,代码如下:
    For j = 1 To jsl(i).n
            id = id + 1
            rs_section.AddNew
            'rs_section.Fields(0) = id  '//路段路况信息
            rs_section.Fields(1) = jsl(i).gridn & jsl(i).linkN
            '--------------------------------------------------------------改变时间格式
            rs_section.Fields(2) = jsl(i).level
            rs_section.Fields(3) = jsl(i).jsects(j).time
            
            rs_section.Fields(4) = jsl(i).n
            rs_section.Fields(5) = jsl(i).jsects(j).lev
            rs_section.Fields(6) = jsl(i).jsects(j).s
            rs_section.Fields(7) = jsl(i).jsects(j).l
            rs_section.Update
            
          Next j
          
          If (id > 1000) Then
             rs_section.ActiveConnection = cnn
             rs_section.UpdateBatch
             
             rs_section.ActiveConnection = Nothing
             id = 0
          End If