Foxtable(狐表)用户栏目专家坐堂 → [求助]表达式列的影响


  共有1591人关注过本帖树形打印复制链接

主题:[求助]表达式列的影响

帅哥哟,离线,有人找我吗?
chnfo
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
[求助]表达式列的影响  发帖心情 Post By:2024/4/22 13:49:00 [只看该作者]

例如商品目录表,原来已经有1000种商品,而且在商品出入库记录中引用了商品ID,如商品编号、名称、规格、单位是用表达式,使用公式给它们赋值,如Parent(商品_出入库).编号等

现在再导入另外2000种新商品,会不会因为“表达式列的影响”而导致系统响应时间长?

如果有影响的话,那么表达式列使用就会有很大障碍了,只能做数据库冗余……
[此贴子已经被作者于2024/4/22 13:50:52编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110443 积分:562081 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/4/22 14:13:00 [只看该作者]

有表达式的时候测试导入,和没有表达式的时候测试导入。看看分别导入的时间就知道了


 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2024/4/22 21:50:00 [只看该作者]

实测背景:
1、原来的物料表有1000行,出入库记录有10000行(只引用了这1000行的物料ID),而且出入库记录中通过物料ID做表关联设置了表达式,表达式列包括物料名称、规格、单位
2、新merge物料2000行(原来已经有的1000行不包括在内)

实际运行结果:
不论出入库记录是否设置了表达式,merge的效率都在3秒左右,短的用时2.3秒,长的用时接近3秒。

所以我的猜测是:
如果父表插入新数据,而不是修改既有父表的列数据,则子表虽然引用了父表数据,但不会对运行效率有影响,因为这时候子表并没有引用新数据
但如果批量修改已经被子表引用的父表数据,则可能会有影响,所以,进行了下面的测试

另外的测试
1、出入库不设置表达式
物料表从加载空表,到加载全部明细1000行,耗时0.36秒
2、出入库设置表达式
物料表从加载空表,到加载全部明细1000行,耗时1.8秒
似乎重新加载主表,而子表引用主表数据,影响也并非完全不可接受地慢
--结论:从这个意义上说,如果子表只是引用主表数据,而不做其它的四则运算,表达式列的影响似乎也没有几百倍的差距
所以,我在想“表达式列的影响”这一节,真正影响效率的是引用后的四则运算,而不是表达式的公式,例如只是引用主表的单价,那么主表单价发生变化,那么子表显示新的主表单价,并不会导致什么超级慢的情况发生

官方在这一节的帮助,有点误导嫌疑,之前我看到这一节以后,一直不敢随便使用表达式,就象示例所说,我只是根据引用的物料编号,给名称、规格、单位做表达式赋值,而它们几乎不参与任何运算,所以,即使主表的例如名称做了批量修改(这种情况发生的概率其实是非常低的),影响也几乎可以忽略不计,毕竟0.4秒和1.8秒这种差异,并无什么明显感觉
[此贴子已经被作者于2024/4/22 22:18:34编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110443 积分:562081 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/4/22 22:06:00 [只看该作者]

确实如此。表达式引用的列数据没有变化,就不会触发表达式计算

 回到顶部