Jeg kan ikke sige, hvor meget hurtigere dette vil være, men der er simple optimeringer til din forespørgsel
Dim queryInsert As String = "INSERT INTO tbl_shipdetails (ship_date, " & _
"item_type, item_code, imei1, imei2)" & _
"VALUES(@p1,'@p2,@p3,@p4,@p5)"
Dim cmd = New MySqlCommand(queryInsert, Myconnect)
cmd.Parameters.Add("@p1", MySqlDbType.VarChar)
cmd.Parameters.Add("@p2", MySqlDbType.VarChar)
cmd.Parameters.Add("@p3", MySqlDbType.VarChar)
cmd.Parameters.Add("@p4", MySqlDbType.VarChar)
cmd.Parameters.Add("@p5", MySqlDbType.VarChar)
For i As Integer = 0 To DataGridView1.Rows.Count - 1
cmd.Parameters("@p1").Value = DataGridView1.Rows(i).Cells(1).Value
cmd.Parameters("@p2").Value = DataGridView1.Rows(i).Cells(2).Value
cmd.Parameters("@p3").Value = DataGridView1.Rows(i).Cells(3).Value
cmd.Parameters("@p4").Value = DataGridView1.Rows(i).Cells(4).Value
cmd.Parameters("@p5").Value = DataGridView1.Rows(i).Cells(5).Value
cmd.ExecuteNonQuery()
Next
Brug af parametre giver dig mulighed for at bygge MySqlCommand kun én gang uden for løkken og undgår også det nødvendige arbejde for at sammenkæde strengene. (For ikke at nævne problemet med Sql Injection)
Bemærk, at jeg har fulgt dit tip i sql-teksten, hvor alle dine felter ser ud til at være af typen string(VarChar). Hvis dine felter er af forskellig datatype, skal du justere MySqlDbType-enummet til din korrekte datatype (og konvertere inputværdierne=