实测背景:
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编辑过]