先说场景:
数据库中的一张表中有200W条数据 原始数据
现在 我要将数据库中的原始数据处理 然后分发到几个表中间去 我的实现方法
连接数据库之后 for(int i = 0 ; i < 2000000 ; i++)
{
//组织好结构体
MYSTRUCt Struct = MakeStruct(); //将数据库中的一条记录组织成结构体
DispatchDate(Struct); //处理数据 分发至各个表
}请问 有没有办法能够提高效率 ??
能否实现集中查询 将Struct存储到数组中我的查询代码如下就是大量的PutCollect() 这个过程有没有办法提升效率??
数据库中的一张表中有200W条数据 原始数据
现在 我要将数据库中的原始数据处理 然后分发到几个表中间去 我的实现方法
连接数据库之后 for(int i = 0 ; i < 2000000 ; i++)
{
//组织好结构体
MYSTRUCt Struct = MakeStruct(); //将数据库中的一条记录组织成结构体
DispatchDate(Struct); //处理数据 分发至各个表
}请问 有没有办法能够提高效率 ??
能否实现集中查询 将Struct存储到数组中我的查询代码如下就是大量的PutCollect() 这个过程有没有办法提升效率??
解决方案 »
- 请教 关于DLL中类成员变量的问题
- winuser.h中不能找到的消息
- mfc activex控件,创建工程时选择button子类,我如何更改button的显示?
- 内存读取问题
- _variant_t ,_bstr_t 与 CString 类有什么区别?
- 请问socket的connect如何不受防火墙的影响?
- 谁有《新编Windows API参考大全》啊,DOC、PDF、CHM格式均可!
- GetPixel错误啊
- 客户端采取 完成端口接包,服务器段突然对客户端SOCKET读写都失败
- 有《精通Visual C++图象编程》下吗?
- vc ado 怎样用语句实现两个ORACLE库表和表的数据添加
- 请教关于WM_TIMER不响应怎么受OnPaint影响的问题
http://blog.csdn.net/wncnke/archive/2009/05/05/4150545.aspx
我觉得主要也就是从这便文章所说的几个因素下手。我觉得关键在于尽量避免引起全表扫描
我现在的程序太慢了
{
//组织好结构体
MYSTRUCt Struct = MakeStruct(); //将数据库中的一条记录组织成结构体
DispatchDate(Struct); //处理数据 分发至各个表
}这样不好,做的太死MYSTRUCt *Struct=NULL
for(int i = 0 ; i < 2000000 ; i++)
{
//组织好结构体
MYSTRUCt *Struct2=new MYSTRUCT();
Struct->next=Struct2;
p=Struct2; //p用来指示当前位置}先串成个链表,最后一起进行你这样一条进来判断一条不好,我串成一根链表,逻辑判断和派发可以从2端同时开始,你的效率不就提升了一倍吗?
不过,如果数据库操作比多多的话,还是要避免在主线程中操作数据库。
另外MFC中有指针数组,CPtrArray,指针链表CPtrList可以使用。
例如:你把NAME='XX'的分发到表X中;
insert into x select * from table where NAME='XX';//这样的处理,都交给数据库服务器来处理!数据库服务器,对表的索引建立要健壮!如果按楼主的方法来处理,分析一下:
一,要从数据库里取数出来,而且是一条一条的记录取。
二,然后是把数据传到客户端内存处理。
三,在然后是经过加工后在传到数据库进行处理。以上只是建意,不正确的地方,请拍砖!