В программе я создал следующую логику для чтения данных из базы данных и хранить его в список <>:Есть ли способ ускорить чтение данных?
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);
}
Выполнение этого кода действительно бедных. Есть более 2 млн записей, и через полчаса список userInfo содержит всего 300 000 записей.
Кто-нибудь знает, как ускорить чтение данных из базы данных?
Я заметил, что вы приняли мой ответ. Каковы были результаты после изменения? – Matthew
Вот копия из файла журнала: 20:48:00 Начиная с поиска данных из postgres ..., 11.6.2012 20:50:42 извлечено 50000 записей из postgres –
Итак, 50 000 записей за 3 минуты ... хорошее улучшение по сравнению с предыдущим уровнем в 300 000 записей за 30 минут ... на 60% больше ... Это все еще кажется очень медленным! – Matthew