以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  【求助】狐表万行数据计算优化请教!  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=151285)

--  作者:chen_sheng
--  发布时间:2020/6/19 15:01:00
--  【求助】狐表万行数据计算优化请教!
1、由于应用场景需要 需要进行计算 请求算法指导!
A、狐表内计算优化方案
B、sql数据内进行计算优化方案
C、指导一下用哪种方案性能最优
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:生产工票.zip


特别说明  附件内的数据请设置sql数据源及数据

                              谢谢!

--  作者:有点蓝
--  发布时间:2020/6/19 15:24:00
--  
如果数据已经加载,建议改为在datacolchanged事件处理
--  作者:chen_sheng
--  发布时间:2020/6/19 15:59:00
--  
感谢蓝版的及时指导

应用场景如下
1.订单有多个柜子+其他部件=300个部件
2.每个部件经历20个工序左右
3.每个工序又产不多有5个判断
300*20*5=15000条明细运算

假如DataColChanged事件效率反而不高  目前这种方式运算万行9分钟左右

图片点击可在新窗口打开查看此主题相关图片如下:万行运算用时.jpg
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2020/6/19 16:09:00
--  
不知道datacolchanged是怎么用的?

如果是逐条录入数据的,基本感觉不出来。如果是批量导入数据的,也就只能这样的了,遍历+sql的方法也未必快多少。

如果不跨表的话,使用这种方式应该会快一点:http://www.foxtable.com/webhelp/topics/1277.htm

--  作者:chen_sheng
--  发布时间:2020/6/19 16:13:00
--  
现在遇到2个问题
1、保存万行数据太久了 计算9分钟  保存差不多9分钟
2、这是用视图+存储过程生成的sql表数据  项目用的只是加载到窗口表而已
[此贴子已经被作者于2020/6/19 16:14:37编辑过]

--  作者:有点蓝
--  发布时间:2020/6/19 16:16:00
--  
如果sql熟练的话,可以考虑把逻辑搬到存储过程里处理。
--  作者:chen_sheng
--  发布时间:2020/6/19 16:48:00
--  
蓝版 sql 只看了狐表帮助 懂的就是帮助的基础部分,能否请教指导一下 这个场景咋处理  或者给下指导思路

计算列:[工序条件]   [单价公式]   

单价公式例子:
case 
when [家具名称] like \'%酒柜%\'  then [平方数]*7 
when [家具名称] like \'%博古架%\'  then [平方数]*9 
when [家具名称] like \'%衣柜%\'  then [平方数]*5.5 
else [平方数]*7 
end

工序条件例子:
[家具名称] not like \'%不试装%\'

所有[单价公式]   [工序条件]的计算参数条件数据均通过视图+存储过程导入到[生产工票]表内

S ELECT [单号],[行号],[工艺编号],[物料代码],[名称],[长],[宽],[厚],[数量],[操作员]
,[备注],[操作日期],[工序记录],[工艺判断],[ID],[工艺],[颜色],[材质],[输出_满足工序条件]
,[输出_单价],[家具名称],[_Locked],[_Identify],[工序编号],[工序名称],[车间],[单价公式]
,[工序条件],[平方数]  FROM [生产工票]
[此贴子已经被作者于2020/6/19 17:15:15编辑过]

--  作者:有点蓝
--  发布时间:2020/6/19 20:29:00
--  
如果要使用sql,先上网学习一下:存储过程怎么建?游标怎么使用?怎么在存储过程里执行动态sql?
--  作者:有点蓝
--  发布时间:2020/6/19 20:31:00
--  
如果经常要这样批量处理数据,建议做个服务端项目,放到服务端定时自动执行。