Не мога да кажа колко по-бързо ще бъде това, но има лесни оптимизации на вашата заявка
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
Използването на параметри ви позволява да изградите MySqlCommand само веднъж извън цикъла и също така избягва работата, необходима за конкатенация на низовете. (Да не говорим за проблема с инжектирането на Sql)
Забележете, че последвах вашия намек в sql текста, където всички ваши полета изглежда са от тип string(VarChar). Ако вашите полета са с различен тип данни, тогава трябва да коригирате изброяването MySqlDbType към вашия правилен тип данни (и да конвертирате входните стойности=