プログラムでは、データベースからデータを読み取り、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);
}
このコードのパフォーマンスは非常に悪いです。200 万を超えるレコードがあり、30 分後にリスト userInfo には 300.000 レコードしか含まれていません。
データベースからのデータ読み取りを高速化する方法を知っている人はいますか?