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


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

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

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


加好友 发短信
等级:狐精 帖子:3313 积分:23146 威望:0 精华:1 注册:2009/3/31 11:25:00
关于狐表启动速度问题?  发帖心情 Post By:2009/6/17 9:29:00 [只看该作者]

老大,可否给一些建议,如何防止起启速度慢的注意事项及建议,以便初学者提供考参。因做好的应用软件启动速度慢,会给开发软件带来很大麻烦及使用者的怀疑。我现就遇到这样的问题,因我才都是使用外部数据表,在打开项目时,超慢呀!但又不知如何解决?

 回到顶部
美女呀,离线,留言给我吧!
yangming
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/6/17 9:36:00 [只看该作者]

我的建议:打开项目时选不要加载太多的数据或是加载太多的表,完全打开后再根据需要加载

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望: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编辑过]

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


加好友 发短信
等级:狐精 帖子:3313 积分:23146 威望:0 精华:1 注册:2009/3/31 11:25:00
  发帖心情 Post By:2009/6/17 9:41:00 [只看该作者]

谢老大指点!有关此方面,还得摸索呀。可否帮我看下?



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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/6/17 9:43:00 [只看该作者]

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

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

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


加好友 发短信
等级:狐精 帖子:3313 积分:23146 威望:0 精华:1 注册:2009/3/31 11:25:00
  发帖心情 Post By:2009/6/17 9:45:00 [只看该作者]

哦,先研究下。再优化下。不行,再找老大帮忙。


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


加好友 发短信
等级:狐精 帖子:3313 积分:23146 威望:0 精华:1 注册:2009/3/31 11:25:00
  发帖心情 Post By:2009/6/17 9:46:00 [只看该作者]

可能跟Yangming版主提到找开表可能是多了一点。


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/6/17 9:53:00 [只看该作者]

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


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


加好友 发短信 F6
等级:狐精 帖子:3036 积分:19229 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By:2009/6/17 10:14:00 [只看该作者]

以下是引用狐狸爸爸在2009-6-17 9:53:00的发言:

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

应该要这样做的,没有用到的就不必要加载
如果习惯上不想切割系统的话,就考虑动态加载


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


加好友 发短信
等级:狐精 帖子:3313 积分:23146 威望:0 精华:1 注册:2009/3/31 11:25:00
  发帖心情 Post By:2009/6/17 10:46:00 [只看该作者]

好建议!研究下动态加载最佳方式。

 回到顶部