Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
双向关联的影响
Foxtable的双向关联功能,使得相关数据信手拈来,为我们查看数据带来了极大的便利。
但是关联较多的时候,双向关联对于性能是有较大影响的,特别是打开项目的速度会明显变慢。
例如一个项目包括客户、产品、雇员、订单、订单明细五个表,这五个表建立了四个关联:
父表 | 子表 | 关联列 |
客户 | 订单 | 客户编号 |
雇员 | 订单 | 雇员编号 |
产品 | 订单明细 | 产品编号 |
订单 | 订单明细 | 订单编号 |
当我们将主表切换到客户表的时候,会出现5个Table,分别为:
Tables("客户")
Tables("客户.订单")
Tables("客户.订单.雇员")
Tables("客户.订单.订单明细")
Tables("客户.订单.订单明细.产品")
实际上,切换到任何一个主表,都会出现5个Table,用于显示相关联的数据,也就是说现在这个项目虽然只有5个Datatable,但是因为关联的存在,出现了25个Table。
打开项目的时候,要分别生成这25个Table,运行的过程中还要维护这25个Table,自然对性能会有影响,而且随着关联的增加,Table的数量可能会以平方数增长的。
我们可以关闭双向功能,减轻这种影响,在关闭双向关联的情况下,将主表切换到客户表的时候,会出现3个Table,分别为:
Tables("客户")
Tables("客户.订单")
Tables("客户.订单.订单明细")
将主表切换到订单表的时候,会出现2个Table,分别为:
Tables("订单")
Tables("订单.订单明细")
在关闭双向关联的时候,Table的数量将减少一半,所以性能会有所提升。
如果要关闭双向关联,可以在项目属性设置中,将双向关联属性设为False,然后重新打开项目即可。
表达式列的影响
表达式列的存在,特别是用表达式列引用父表数据,或用聚合函数统计子表数据时,会对批量修改数据、同步表、以及导入和合并数据等操作,带来较大的性能损失。
我们可以在执行此类代码之前,先清楚表达式,在执行结束后,再恢复表达式。
请参考:
D
抱歉,目前我没有时间细看你的设计
你可以将项目传上来,让大家一起分析分析。
哦,先研究下。再优化下。不行,再找老大帮忙。
可能跟Yangming版主提到找开表可能是多了一点。
可以考虑做成两个,甚至多个项目,各自负责处理某些任务,共享外部数据源,这样就快了。
可以考虑做成两个,甚至多个项目,各自负责处理某些任务,共享外部数据源,这样就快了。
应该要这样做的,没有用到的就不必要加载
如果习惯上不想切割系统的话,就考虑动态加载