Spanish Rendimiento Insert (SOLUCIONADO)

benji

Active Member
Licensed User
Longtime User
Buenas tardes a todos, tengo este codigo que me esta dando problemas, es un insert de 85 mil registros y se esta demorando mucho, alrededor de 10 minutos, el tema es que en selectos casos he logrado que demore 30 segundos y no logro entender porque...
alguna idea para mejorar el rendimiento, desde ya, muchas gracias.

Insert:
Sub btnLote_Click

    ProgressDialogShow("Cargando Lotes...")
    Wait For (Connect) Complete (Success As Boolean)
    If Success Then
    Try
        Dim sf2 As Object = mysql.ExecQueryAsync("mysql", "Select * from lote;",Null)
        Wait For (sf2) mysql_QueryComplete (Success As Boolean, Crsr As JdbcResultSet)
        If Success Then
            Main.DBLocalWMS.BeginTransaction
            Try
                Main.DBLocalWMS.ExecNonQuery("Delete from lote")
                Do While Crsr.NextRow
                    i = i + 1
                    AuxCodigo = Crsr.GetInt("codigo")
                    AuxLote = Crsr.GetString("lote")
                    AuxUMB = Crsr.GetString("umb")
                    AuxVenc = Crsr.GetString("vencimiento")
                    Main.DBLocalWMS.AddNonQueryToBatch("Insert into Lote values(?,?,?,?)",Array As Object(AuxCodigo,AuxLote,AuxUMB,AuxVenc))
                Loop
                Main.DBLocalWMS.ExecNonQueryBatch("mysql")
                Main.DBLocalWMS.TransactionSuccessful
                Catch
                    Log(LastException.Message)
                End Try
                Main.DBLocalWMS.EndTransaction
                Crsr.Close
            End If
        Catch
            Success = False
            Log(LastException)
        End Try
        CloseConnection
        ProgressDialogHide   
    End If

    

End Sub
 

TILogistic

Expert
Licensed User
Longtime User
por lo que veo estas haciendo una transacción atómica.

Debería hacerlo por registro, siempre que no tengas otras dependencias en la base de datos.

y lo otro tienes el delete de la tabla dentro de la transacción es otro punto a mirar.

Saludos. compatriota.
 

benji

Active Member
Licensed User
Longtime User
por lo que veo estas haciendo una transacción atómica.

Debería hacerlo por registro, siempre que no tengas otras dependencias en la base de datos.

y lo otro tienes el delete de la tabla dentro de la transacción es otro punto a mirar.

Saludos. compatriota.

el delete no es problema, 85 mil registros no lo veo tan atomico :rolleyes: segun yo...jajaja..
en todo caso, ya lo solucione, al probar en Release Mode, funciona rapido, un par de segundos y listo.
 
Top