以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 保存时间比较长 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=184686) |
|
-- 作者:nuoyan89 -- 发布时间:2022/12/22 13:29:00 -- 保存时间比较长 老师,以下用来更新后台数据时因《出入库明细》表中明细比较多(目前60万条)每次点击保存时好慢,要等3分钟的样子,有什么方法可以优化吗? For Each dr4 As Row In Tables("出入库明细").Rows For Each dr As DataRow In dt1.dataRows Dim drs As List(Of DataRow) = DataTables("出入库明细").sqlSelect("成品编码 = \'" & dr("成品编码") & "\' and 采购订单号 = \'" & dr("采购订单号") & "\' and 单据类型 = \'入库\'") For Each dr2 As DataRow In drs dr2("出库数量") = dr("出库数量") Next DataTables("出入库明细").SQLUpdate(drs) Next Next DataTables("出入库明细").loadfilter = "" DataTables("出入库明细").load DataTables("出入库明细").Save() [此贴子已经被作者于2022/12/22 13:29:49编辑过]
|
|
-- 作者:有点蓝 -- 发布时间:2022/12/22 13:48:00 -- 遍历dt4是干嘛用的?dt1又是什么鬼? |
|
-- 作者:nuoyan89 -- 发布时间:2022/12/22 13:53:00 -- 老师,这个是全代码。 DataTables("零件库领料单_出库").Save() DataTables("零件库领料单_出库").RemoveFor("") Dim b As New SQLGroupTableBuilder("统计表1", "出入库明细") b.C b.Groups.AddDef("成品编码") \'根据产品分组 b.Groups.AddDef("采购订单号") \'根据产品分组 b.Totals.AddDef("出库数量") \'对数量进行统计 b.Filter = "[单据类型] = \'出库\'" Dim dt1 As DataTable = b.Build(True) For Each dr4 As Row In Tables("出入库明细").Rows For Each dr As DataRow In dt1.dataRows Dim drs As List(Of DataRow) = DataTables("出入库明细").sqlSelect("成品编码 = \'" & dr("成品编码") & "\' and 采购订单号 = \'" & dr("采购订单号") & "\' and 单据类型 = \'入库\'") For Each dr2 As DataRow In drs dr2("出库数量") = dr("出库数量") Next DataTables("出入库明细").SQLUpdate(drs) Next Next DataTables("出入库明细").loadfilter = "" DataTables("出入库明细").load DataTables("出入库明细").Save() |
|
-- 作者:有点蓝 -- 发布时间:2022/12/22 13:59:00 -- 遍历dt4是干嘛用的 |
|
-- 作者:nuoyan89 -- 发布时间:2022/12/22 14:03:00 -- 遍历4是不需要的,我改过了。
|
|
-- 作者:有点蓝 -- 发布时间:2022/12/22 14:47:00 -- 代码没有什么办法改进了,动不动都操作几十万的数据,考虑学学使用sql吧。 或者考虑改进一下业务逻辑,做月结,季结等。更新只需要更新当月,当季等数据即可。 一个表既做入库又做出库本身就不是合理的做法,现在只是慢,估计半年后程序和人都要崩溃了
|