以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- sqlcommand插入数据过慢 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=151011) |
-- 作者:lur320 -- 发布时间:2020/6/12 15:48:00 -- sqlcommand插入数据过慢 如下代码,大约18000行数据,太慢了。有没有办法加速? DataTables("MMS080").SQLDeleteFor("") Dim cmd As new SQLCommand cmd.C cmd.CommandText = "Insert Into MMS080 (itemnumber, quantity, ordernumber,status) Values(?,?,?,?)" For Each dt As Row In Tables("tempmms080").Rows \'\'\'\'历遍open mo If CInt(dt.Index/1200) = dt.Index/1200 Then Vars("loadingtext") ="请等待: " & math.Ceiling(100*dt.Index/Tables("tempmms080").Rows.count) & "%" End If 这一段大约等了30几秒。从0%一直到100% cmd.Parameters.Clear cmd.Parameters.Add("@itemnumber",dt("Item number")) cmd.Parameters.Add("@quantity",dt("Transaction quantity")) cmd.Parameters.Add("@ordernumber",dt("Order number")) cmd.Parameters.Add("@status",dt("Status")) cmd.ExecuteNonQuery Next th2.start() DataTables("MMS080").load Tables("MMS080").ResumeRedraw DataTables.delete("tempmms080") Return Nothing [此贴子已经被作者于2020/6/12 15:49:03编辑过]
|
-- 作者:有点蓝 -- 发布时间:2020/6/12 16:06:00 -- 1、如果是SqlServer,参考:http://foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=147288&skin=0 2、access可以尝试加上事务:http://www.foxtable.com/webhelp/topics/3312.htm 另外去掉在循环里显示进度的用法,这种本身就严重影响效率
|
-- 作者:lur320 -- 发布时间:2020/6/12 16:08:00 -- sqlserver的那个连接失效了。 |
-- 作者:有点蓝 -- 发布时间:2020/6/12 16:12:00 -- 我打开没有问题。或者论坛里自己搜“sqlBulkCopy” |