Non posso dire quanto sarà più veloce, tuttavia ci sono semplici ottimizzazioni per la tua query
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
L'utilizzo dei parametri permette di costruire il MySqlCommand una sola volta fuori dal ciclo ed evita anche il lavoro necessario per concatenare le stringhe. (Per non parlare del problema di Sql Injection)
Nota che ho seguito il tuo suggerimento nel testo sql in cui tutti i tuoi campi sembrano essere di tipo string (VarChar). Se i tuoi campi hanno un tipo di dati diverso, dovresti regolare l'enumerazione MySqlDbType sul tipo di dati corretto (e convertire i valori di input=