Использование : SQL Server 2008, Entity Framework
Я суммирую столбцы в таблице в диапазоне дат / времени. Стол прост:
DataId bigint IDENTITY(1,1) NOT NULL PRIMARY KEY,
DateCollected datetime NOT NULL,
Length int NULL,
Width int NULL,
-- etc... (several more measurement variables)
Получив диапазон даты / времени, я использую linq-to-EF для возврата запроса
var query = _context.Data.Where(d =>
(d.DateCollected > df &&
d.DateCollected < dt))
Затем я строю свою структуру данных, используя сумму элементов данных, которые меня интересуют
DataRowSum row = new DataRowSum
{
Length_Sum = query.Sum(d => d.Length.HasValue ? (long)d.Length.Value : 0),
Width_Sum = query.Sum(d => d.Width.HasValue ? (long)d.Width.Value : 0),
// etc... (sum up the rest of the measurement variables)
}
Хотя это работает, это приводит к большому количеству обращений к БД и является довольно медленным. Есть лучший способ сделать это? Если это означает делать это в хранимой процедуре, это нормально для меня. Мне просто нужно улучшить производительность, так как мы только добавим больше переменных измерения, и эта проблема производительности только ухудшится.