赞
踩
Access在多个数据库多表中读取
Release版直接点击exe下运行
以MMQ工程为例,读取desi类型数据库
1.105个数据库,每个数据库169个表,共 151336条记录,时间:31秒
2.数据库连接及表格连接(不读取内容),时间:23秒
Access在1个数据库1个表中读取
Release版直接点击exe下运行
以MMQ中的MMQ0185_0001.mdb为例,读取MMQ0185_0001.mdb数据库
1.1个数据库,读取scom表,共 162259条记录,25个字段,时间: 10秒
2. 1个数据库,读取scom表,共 293325条记录,35个记段,时间:20秒
3. 1个数据库,读取scom表,共 293325条记录,9个记段无值的数值型字段, 时间:3秒
Mysql在1个数据库1个表中读取
Release版直接点击exe下运行
以MMQ中的MMQ0185_0001.mdb为例,读取MMQ0185_0001.mdb数据库
1.1个数据库,读取scom表,共 292147条记录,25个字段,时间:24秒
单全亮(634772208) 10:42:48
一、读取并解析293325条记录(25列,release下测试)
1、使用ole db访问access
结果:平均消耗43797ms,去除for循环中临时对象CString的构造,平均消耗25787ms,提速41%
2、使用ODBC访问mysql5.5(使用8.0版本测试结果差不多)
测试结果:消耗51044ms
3、使用mysql c lib访问mysql5.5(使用8.0版本测试结果差不多)
结果:消耗11373ms
二、带where条件读取并解析条纪录(从293325条中选出16671条记录,25列,release下测试)
1、使用ole db访问access
结果:平均2699ms
2、使用ODBC访问mysql5.5(使用8.0版本测试结果差不多)
结果:平均4524ms
3、使用mysql c lib访问mysql5.5(使用8.0版本测试结果差不多)
结果:2193ms
本次测试结论:
1、使用ole db技术访问,access相对来说占优,使用mysql自带c接口访问,mysql占优。
2、对底层有效率要求的代码,要注意代码编写。本次测试中发现构造CString对象,
消耗还有挺大的,要排查代码,去除循环中频繁构造CString对象的情况。
3.ODBC访问access比ole db慢
2019/4/15 - 2019/4/16
1、修改了持久层频繁构造的CString(改成static或从循环体中去除,移至外层),使用SAM工程下的SITE STABILIZER测试,Retrive所有结点数据消耗7秒左右。
对时间并没有太大的改善。
2、SQL语句修改:将SELECT * 换成形如SELECT col1, col2, ...的语句,随着列减少,消耗有较明显提高,
测试数据:从293325条中选出16671条记录,25列平均消耗125ms, 12列94ms
3、将EnvId与ElementID合成一列存在数据库,有待测试;合并..or..or..语句,减少调用select语句数,有待测试。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。