先说场景:
数据库中的一张表中有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() 这个过程有没有办法提升效率??
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';//这样的处理,都交给数据库服务器来处理!数据库服务器,对表的索引建立要健壮!如果按楼主的方法来处理,分析一下:
一,要从数据库里取数出来,而且是一条一条的记录取。
二,然后是把数据传到客户端内存处理。
三,在然后是经过加工后在传到数据库进行处理。以上只是建意,不正确的地方,请拍砖!