Não posso dizer o quanto isso será mais rápido, no entanto, existem otimizações simples para sua 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
O uso de parâmetros permite que você construa o MySqlCommand apenas uma vez fora do loop e também evita o trabalho necessário para concatenar as strings. (Sem mencionar o problema de Sql Injection)
Observe que segui sua dica no texto sql, onde todos os seus campos parecem ser do tipo string (VarChar). Se seus campos forem de tipo de dados diferente, você deve ajustar a enumeração MySqlDbType para o tipo de dados correto (e converter os valores de entrada =