在程序中,我创建了以下逻辑,用于从数据库中读取数据并将其存储到 List<> 中:
NpgsqlCommand cmd = new NpgsqlCommand(query, conn);
List<UserInfo> result = new List<UserInfo>();
Npgsql.NpgsqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
string userId = rdr[0].ToString();
string sex = rdr[1].ToString();
string strDateBirth = rdr[2].ToString();
string zip = rdr[3].ToString();
UserInfo userInfo = new UserInfo();
userInfo.Msisdn = userId;
userInfo.Gender = sex;
try
{
userInfo.BirthDate = Convert.ToDateTime(strDateBirth);
}
catch (Exception ex)
{
}
userInfo.ZipCode = zip;
userInfo.DemographicsKnown = true;
userInfo.AgeGroup = getAgeGroup(strDateBirth);
if (result.Count(x => x.Id== userId) == 0)
result.Add(userInfo);
}
这段代码的性能真的很差。有超过 2M 的记录,半小时后列表 userInfo 仅包含 300.000 条记录。
有谁知道如何加快从数据库读取数据的速度?