以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  经验分享,关于数据源选择的考虑  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=67357)

--  作者:lyfxybc
--  发布时间:2015/4/22 20:42:00
--  经验分享,关于数据源选择的考虑

关于数据源选择的考虑

 

刚开始接触狐表,直接用access作为数据源,编写了生产管理软件,现在已经用了2年,数据库接近300M,现在感觉统计数据满了很多,其中一个合同报表,需要五大车间年初至今(一直到全年)的数据,并且要求合同完成多少,未完成多少,都要计算出来,累计时间最早15分钟统计完,之后调整了统计代码统计时间还需要50‘’---90‘’之间。同事查询数据时加载也慢。用了几天时间,改用sql2005作为数据源,经过调整(时间#改为\',值为true和false的列改为1和0,以及条件语句等都要改过来,数据表导出导入等工作),今天全部电脑调试完毕,速度比access快的惊人。在所有电脑均统计了合同报表,经使用统计速度均3秒内完成。查询速度也非常快,以前更新一下目录树也需要5-6秒甚至更多的时间,现在基本不存在等待情况。

 

建议新手根据自己的需求,尽量开始就用sql作为数据库,以免速度也来越慢,以后更换虽然简单,但是所有的报表,日期、true、false、iif等都要调整,工作量也很大,改了这边,忘了那边。

 

另外,统计数据是可能用到辅助表,需要在辅助表填充数据

如用下列代码

 

dim f As New Filler
f
.SourceTable = DataTables("订单") \'指定数据来源
f
.SourceCols = "产品,客户1" \'指定数据来源列
f
.DataTable = DataTables("统计") \'指定数据接收表
f
.DataCols = "产品,客户" \'指定数据接收列
f
.Fill()
\'填充数据

 


f
.SourceTable = DataTables("订单") \'指定数据来源
f
.SourceCols = "产品,客户2" \'指定数据来源列
f
.DataTable = DataTables("统计") \'指定数据接收表
f
.DataCols = "产品,客户" \'指定数据接收列
f
.Fill()
\'填充数据

 

f.SourceTable = DataTables("订单") \'指定数据来源
f
.SourceCols = "产品,客户3" \'指定数据来源列
f
.DataTable = DataTables("统计") \'指定数据接收表
f
.DataCols = "产品,客户" \'指定数据接收列
f
.Fill() \'填充数据

.....

.....

.......

但是,当数据量较大,有时达到100M以上的数据量时,或许数据更多,上面代码或许慢了许多

碰到这种情况,我才用了类似下列代码先导出,再倒入

 \'导出当天订单
Dim
ex As New Exporter
ex
.SourceTableName = "订单"
ex.FilePath =
"c:\\temp\\gd.mdb"
ex.Filter =
"日期 = #" & Date.Today & "#"
If
FileSys.FileExists(ex.FilePath) Then \'如果目标文件已经存在
    FileSys.DeleteFile(ex.FilePath)
\'则删除之
End If

ex
.Export()

 

For Each File As String In Filesys.GetFiles("c:\\temp")
    If
File.EndsWith(".mdb") \'如果后缀名是mdb,说明此文件是access格式
        Dim
mg As New Merger
        mg
.SourcePath = file
        mg
.SourceTableName = "订单"
       
mg.DataTableName = "订单"
       
mg.Merge()
        Filesys
.DeleteFile(File) \'合并后删除文件
    End If
Next

 

 

....

 

....

 

同样的数据量,后者速度随着数据量的增多,效果越来越明显快,不知道大家是否有同感

 

当然上面方法不一定最好,但是速度提高了

 

不知道大家还有更好的方法提供一下。

 

最后感谢狐表,感谢狐表团队提供了这么一个好的数据管理软件开发平台。

同时感谢帮助过我的所有老师。


--  作者:九易六
--  发布时间:2015/4/23 6:40:00
--  
感谢分享。很好的开发经验啊。
--  作者:狐狸爸爸
--  发布时间:2015/4/23 8:50:00
--  
顶楼主,谢分享
--  作者:lyfxybc
--  发布时间:2015/4/23 17:35:00
--  
谢谢,这是自己的一点体会。