Nedokážu říct, o kolik to bude rychlejší, ale váš dotaz má jednoduché optimalizace
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
Použití parametrů vám umožní sestavit MySqlCommand pouze jednou mimo smyčku a také se vyhnete práci potřebné ke zřetězení řetězců. (Nemluvě o problému Sql Injection)
Všimněte si, že jsem sledoval vaši nápovědu v textu SQL, kde se zdá, že všechna vaše pole jsou typu string (VarChar). Pokud jsou vaše pole jiného datového typu, měli byste upravit výčet MySqlDbType na váš správný datový typ (a převést vstupní hodnoty=