Foxtable(狐表)用户栏目专家坐堂 → [求助]大数据量的表达式应用问题


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

主题:[求助]大数据量的表达式应用问题

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


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
[求助]大数据量的表达式应用问题  发帖心情 Post By:2018/5/29 9:17:00 [只看该作者]

一个项目中有多个表。
如A与B通过AID关联,B中有一些列设有表达式,如X.expression = Parent(AB).X等等  
B与C通过BID关联,C表中也有一些表达式,如X.expression = Parent(BC).X  

B与D通过BID关联,C与D通过CID关联,D表的X.expression = IIF([CID] is  Null ,Parent(BD).X,Parent(CD).X)

但在实际使用时,发现一个问题。
就是A表的数据达到上万行,B表的数据可能有3万行,C表的数据可能有5万行,D表的数据可能也有3万左右的时候,启动系统奇慢无比。

即使在使用了加载的条件_identify is null,仍然效果不佳,大致测了一下,打开项目需要40秒左右。

初步分析了一下
1、是数据库设计不合理(比如将D表分开为BD和CD两个表,分别只做BD关联和CD关联)
2、表达式列太多?
3、表的加载顺序有问题?例如按ABCD的顺序加载表,或按DCBA的顺序加载表,效率也大不相同?
4、先把所有表的表达式列清空,待数据全部load之后,再重设表达式?而且表达式也要按表的关联的顺序来重设?

如何改进?
[此贴子已经被作者于2018/5/29 9:19:53编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/29 9:25:00 [只看该作者]

表达式列太多,特别是引用父表、统计子表的表达式,不能太多。

 

如果可能,尽量改成用数据列,而不是表达式列。

 

如果确实要用,看看 http://www.foxtable.com/webhelp/scr/1935.htm

 


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


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/5/29 9:32:00 [只看该作者]

你的意思是:主要是表达式列的影响?

如果用数据列,会不会有下面的这种麻烦?
1、数据量大了之后,冗余明显,同步修改会有麻烦。
2、初始加载的量比较大,可能效率也不高。
3、保存数据的时候效率可能也低

目前一般的表达式都是Parent(BD).X,基本上不涉及到计算,尤其是 数量 * Parent(BD).单价这种
[此贴子已经被作者于2018/5/29 9:35:07编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/29 9:35:00 [只看该作者]

那你尝试表达式列留空,表格数据加载完毕,afterOpenProject事件,再给每个表、列设置公式。

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


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/5/29 11:25:00 [只看该作者]

先加载子表的表达式列,再加载主表的表达式列会有影响吗?
还是应当按先主后子的顺序加载表达式?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/29 11:57:00 [只看该作者]

以下是引用chnfo在2018/5/29 11:25:00的发言:
先加载子表的表达式列,再加载主表的表达式列会有影响吗?
还是应当按先主后子的顺序加载表达式?

 

加载完全部表数据以后,直接设置表达式即可,没有顺序问题。


 回到顶部