C/S架构,客户端从服务器数据库查询数据,效率问题

时间:2020-12-16 05:55:10
从服务器端数据库查询数据回来后,client视图把数据存放vector里,发现从ADO REC解析到vector时候,非常慢!
现在所有的aod recordset和数据操作都是放在document类里面,vector放在视图类里面。

怎么优化为好?

5 个解决方案

#1


有多少条记录?大概多少字节?
添加内容时,vector会动态调整大小。这个会比较耗时。
根据记录数,提前设置一下vector的尺寸。

#2


记录数目不等,从几千到几十万不等。字节数比较多,总计40多列数据呢。这块太废时间了。

recordset是不是把数据从服务器取到本地计算的?还是说放在服务器端?如果取到本地client处理,我不如把rec放在view类里面,直接通过虚表读取显示。

这样是不是可以高效点?

#3


DING

#4


recordset不会一次性把所有的记录取下来。只是根据程序的参数取相应的数据。
vector要提前设置好尺寸,否则几十万的元素动态增加,vecotr会多次做malloc, free和memcpy。
另外,每条记录的每个字段你是如何分配变量?如果是用数组还好,否则每条记录你都malloc或new效率也是很低的。
为何要一次性取出?除非写入文件,否则一般你要自己重新实现很多相关的类。

#5


应该预先设置好vector的尺寸

#1


有多少条记录?大概多少字节?
添加内容时,vector会动态调整大小。这个会比较耗时。
根据记录数,提前设置一下vector的尺寸。

#2


记录数目不等,从几千到几十万不等。字节数比较多,总计40多列数据呢。这块太废时间了。

recordset是不是把数据从服务器取到本地计算的?还是说放在服务器端?如果取到本地client处理,我不如把rec放在view类里面,直接通过虚表读取显示。

这样是不是可以高效点?

#3


DING

#4


recordset不会一次性把所有的记录取下来。只是根据程序的参数取相应的数据。
vector要提前设置好尺寸,否则几十万的元素动态增加,vecotr会多次做malloc, free和memcpy。
另外,每条记录的每个字段你是如何分配变量?如果是用数组还好,否则每条记录你都malloc或new效率也是很低的。
为何要一次性取出?除非写入文件,否则一般你要自己重新实现很多相关的类。

#5


应该预先设置好vector的尺寸