posts - 20, comments - 8, trackbacks - 0, articles - 0

找到了瓶颈

剩下就是如何解决的问题了

1、如何加快从文本中提取信息的速度

2、如何避免在多次循环中处理多次判断

3、如何避免避免在循环中于数据库交互

------------------------

对于1,解决比较简单,可以一次性把文本中的数据读入一个字符串,然后处理格式化字符串

例如用逗号分割账号 test1,test2,test3

前面说过,数据在文本中,是逐行存放的

所以我通过

StreamReader sr=new StreamReader(Server.MapPath("temp\\"+fullname));
string strList = sr.ReadToEnd().Replace("\r\n",",");
sr.Close();
string[] nameList = strList.Split(',');

 得到一个nameList数组,然后处理这个数组

为避免打断cpu流水线操作,对于2,3的瓶颈,考虑去掉所有在循环中的判断,只生成sql语句
然后将所有数据读入数据库
而数据间的相关约束,在退出循环后处理
so,新建了一个临时表user_temp,并建立相关索引

Create Table DUE_USER_TEMP
(duetime       
varchar2(6not null,
province      
number(10not null,
city          
number(10not null,
userName      
varchar2(40not null,
userType      
number(5not null,
status        
number(5not null,
money         number(10,2not null,
pushtimes     
number(10default 0,
daypushtimes  
number(10default 0,
lasttime      date 
default sysdate,
reason        
number(5default 0,
createtime    date 
default sysdate,
operator      
number(10default 0,
validflag     
number(5default 0,
reserved1     
number(10),
reserved2     
varchar2(64));

create index dueusertemp_idx1 on due_user_temp(username,province,city); 
create index dueusertemp_idx2 on due_user_temp(province,city,username); 

 

准备将数据通过这个表中转 
(待续)