No puedo decir cuánto más rápido será esto, sin embargo, hay optimizaciones simples para su consulta
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
El uso de parámetros le permite compilar MySqlCommand solo una vez fuera del ciclo y evita también el trabajo necesario para concatenar las cadenas. (Sin mencionar el problema de la inyección Sql)
Tenga en cuenta que he seguido su sugerencia en el texto sql donde todos sus campos parecen ser de tipo cadena (VarChar). Si sus campos tienen un tipo de datos diferente, debe ajustar la enumeración MySqlDbType a su tipo de datos correcto (y convertir los valores de entrada =