最近老大对我们做的数据导入功能意见挺大,数据量一上来,导入时间就很长,严重影响用户体验。因此,不得不花时间捣鼓了一下数据导入的性能优化问题
原始代码:
MySqlCommand command = new MySqlCommand();
command.Connection = conn;
using (StreamReader sr = new StreamReader(new FileStream(sqlFileName, FileMode.Open, FileAccess.Read)))
{
while(sr.Peek() !=-1)
{
string line = sr.ReadLine();
if(line.StartsWith("insert"))//目前只处理insert语句
{
command.CommandText = line;
command.ExecuteNoQuery();
}
}
}
当然,这个代码性能有很大的问题,所以我略施小计形成了第二版代码:
MySqlCommand command = new MySqlCommand();
command.Connection = conn;
List<string> fileLines = new List<string>();
using (StreamReader sr = new StreamReader(new FileStream(sqlFileName, FileMode.Open, FileAccess.Read)))
{
while(sr.Peek() !=