找到了瓶颈
剩下就是如何解决的问题了
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(6) not null,
province number(10) not null,
city number(10) not null,
userName varchar2(40) not null,
userType number(5) not null,
status number(5) not null,
money number(10,2) not null,
pushtimes number(10) default 0,
daypushtimes number(10) default 0,
lasttime date default sysdate,
reason number(5) default 0,
createtime date default sysdate,
operator number(10) default 0,
validflag number(5) default 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);
准备将数据通过这个表中转
(待续)
