Это мой код, который отлично работает до тех пор, пока моя база данных не будет содержать около 20000 записей в основной таблице. Когда DB находится в большой программе, зависает в инструкции da.Fill (данные). Бросок исключений исключается, программа просто перестает работать. Что я могу сделать?C# SqlDataAdapter с большой базой данных
DataTable data = new DataTable();
SqlCeCommand cmd = new SqlCeCommand();
SqlCeDataAdapter da = new SqlCeDataAdapter();
cmd = new SqlCeCommand("SELECT DISTINCT * FROM ((Osoba AS a LEFT OUTER JOIN Doswiadczenie AS b ON a.HashId = b.Hashid) LEFT OUTER JOIN Wyksztalcenie AS c on a.HashId = c.HashId) INNER JOIN Uczelnia as d ON c.UczelniaId = d.UczelniaId WHERE a.DataOstOdczytu >= @minDate AND a.DataOstOdczytu <= @maxDate AND b.DataOdczytu >= @minDate AND b.DataOdczytu <= @maxDate AND c.DataOdczytu >= @minDate AND c.DataOdczytu <= @maxDate", this.Connection);
cmd.Parameters.Add(new SqlCeParameter("@minDate", minDate));
cmd.Parameters.Add(new SqlCeParameter("@maxDate", maxDate));
da.SelectCommand = cmd;
try
{
da.Fill(data);
}
catch (System.Data.SqlServerCe.SqlCeException)
{
throw;
}
return data;
попробуйте получить строку за строкой вместо da.Fill (данные) – lordkain
использовать datareader для лучшей производительности. общий компактный sql медленный, много записей. –
Возможный дубликат [DataAdapter.Fill too slow] (http://stackoverflow.com/questions/8731241/dataadapter-fill-too-slow) – CodeCaster