这个周末过得一点不痛快,因为内部表的Load性能大大地低于外部表,速度的差别竟然高达10倍。
绞尽脑汁,尝试了很多方法,所有可能的方面都尝试了,还是解决不了问题,正打算放弃的时候,无意中压缩了一下项目,结果Load的性能和外部表一样快了。
我是这么测试的,新建一个内部表,增加5万行数据,然后在命令窗口执行下面的代码:
dim s as date =date.now
currenttable.DataTable.Load()
output.show((date.now - s).TotalSeconds)
费时大概是50秒,如果我压缩项目后执行,费时大概是4.5秒。
我不能理解的是为啥打开文件的速度没有什么差别,唯独Load的差距这么大,这也是我没有考虑往压缩项目。
看来定期压缩项目以及外部数据源是应该,建议在非工作时间由专门人员执行。
如果让FoxTable能够聪明地自动压缩项目,那就更好了,既然压缩项目是很重要的。
还有对于FoxTable不支持直接压缩SQL Server,我有点点不满的,呵呵
这个建议如何?
[此贴子已经被作者于2009-6-14 15:06:59编辑过]
1、不需要频繁压缩项目的,我测试的只是一个极端,我用5000行测试的时候,就看不到差别。
2、SQL SERVER本身有压缩命令,在企业管理器应该可以通过设置达到定期压缩的目的
3、SQL SERVER的压缩,应该不会导致这么大的性能差别,我想这种差距是Access独有的。
那您就直接让程序在后台空闲时,自作主张悄悄压缩,省得大家总惦记他,不知可否?
以下是引用狐狸爸爸在2009-6-14 15:10:00的发言:
1、不需要频繁压缩项目的,我测试的只是一个极端,我用5000行测试的时候,就看不到差别。
2、SQL SERVER本身有压缩命令,在企业管理器应该可以通过设置达到定期压缩的目的
3、SQL SERVER的压缩,应该不会导致这么大的性能差别,我想这种差距是Access独有的。
不能自作主张的,多用户的时候,没有办法判断系统是否空闲。
还是手工操作比较好。
以下是引用听雪落的声音在2009-6-15 8:11:00的发言:
昨天也有一个意外发现,删除关联速度成几十倍提升
这是正常的,关联不能太多太复杂,
引用父表或子表的表达式列,可以动态增加,需要的时候再用代码增加。
动态设置关联后,发现表达式不进行计算。
不知道哪里的原因。
在考虑是否抛弃关联,采用datacolchanged来填写数据。
哪个更好点儿,同志们给个建议。
[此贴子已经被作者于2009-6-15 8:35:26编辑过]