У меня есть следующий код возвращение 22,000,000 записей из базы данных довольно быстро:Как читать большой IEnumerable <> быстро
var records = from row in dataContext.LogicalMapTable
select
new
{
row.FwId,
row.LpDefId,
row.FlDefMapID
};
Этого код после вызова базы данных выше занимает более 60 секунд для запуска:
var cache = new Dictionary<string, int>();
foreach (var record in records)
{
var tempHashCode = record.FirmwareVersionID + "." + record.LogicalParameterDefinitionID;
cache.Add(tempHashCode, record.FirmwareLogicalDefinitionMapID);
}
return cache;
Есть ли лучший способ сделать это с улучшением производительности?
Я подозреваю, что фактическое исполнение занимает больше времени, чем вы ожидаете. Поскольку первый оператор является только выражением и на самом деле ничего не выполняет. Как только вы начнете повторять «выражение» в 'foreach()', фактический запрос выполняется на сервере. – Silvermind
Не совсем, кроме поиска другого хеша, чем ваш вычисленный. Реальный вопрос, который вы должны задать, заключается в следующем: действительно ли я * действительно ДЕЙСТВИТЕЛЬНО * нуждается в 22 000 000 элементов в моем кеше? –
366,666 записей в секунду - неплохая скорость для любой РСУБД. Все, что выше 100 000 строк в секунду, быстро. Ваш лучший выбор - читать меньше данных, что бы это ни значило в вашем контексте. – dasblinkenlight