我注意到今天使用 Entity Framework 的执行时间存在巨大差异。我想知道为什么第一个语句有这么多开销。对于这个查询,我正在从数据库中检索 5500 个趋势数据值(这应该没什么大不了的)。
这是我之前使用的语句:
TrendDataValues = new ObservableCollection<TrendDataValue>(_trendDataContext.TrendDatas.First(td => td.Id == argument.TrendDataId)
.TrendDataValues
.Where(tdv => tdv.ValueStartTimestamp >= argument.MinValue
&& tdv.ValueStartTimestamp <= argument.MaxValue));
但是,此语句需要10多秒才能运行。
我已将第一个语句重写为以下语句。这将检索完全相同的数据。但是,此语句在0.2秒内返回值。
TrendDataValues = new ObservableCollection<TrendDataValue>(from td in _trendDataContext.TrendDatas.Where(d => d.Id == trendDataId)
from tdv in td.TrendDataValues
where tdv.ValueStartTimestamp >= argument.MinValue
&& tdv.ValueEndTimestamp <= argument.MaxValue
select tdv);
有人可以澄清这两个陈述之间的区别吗?