Foxtable(狐表)用户栏目专家坐堂 → 关于狐表启动速度问题?


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

主题:关于狐表启动速度问题?

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


加好友 发短信
等级:管理员 帖子:47479 积分:251266 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/6/17 9:36:00 [显示全部帖子]

很多因素都会影响启动速度,但是看不到你的设计,不知道什么原因。

我估计你的表态多,关联太多。

基本规则:

1、同样结构的数据,应该一个表保存,用动态加载来管理;不应该分开成很多表,有的人完全结构相同的表,分开20个表保存,想快都难。
2、控制关联的数量
3、不用默认打开全部窗口。

也可以看看下面的内容:

双向关联的影响


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
ataTables("某表1").DataCols("某列1").Expression = ""
DataTables(
"某表1").DataCols("某列2").Expression = ""
DataTables(
"某表2").DataCols("某列1").Expression = ""
'原来的代码

DataTables(
"某表1").DataCols("某列1").Expression = "原来的表达式"
DataTables(
"某表1").DataCols("某列2").Expression = "原来的表达式"
DataTables(
"某表2").DataCols("某列1").Expression =
"原来的表达式"


[此贴子已经被作者于2009-6-17 9:39:32编辑过]

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


加好友 发短信
等级:管理员 帖子:47479 积分:251266 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/6/17 9:43:00 [显示全部帖子]

抱歉,目前我没有时间细看你的设计
你可以将项目传上来,让大家一起分析分析。

[此贴子已经被作者于2009-6-17 9:42:59编辑过]

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


加好友 发短信
等级:管理员 帖子:47479 积分:251266 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/6/17 9:53:00 [显示全部帖子]

可以考虑做成两个,甚至多个项目,各自负责处理某些任务,共享外部数据源,这样就快了。


 回到顶部