我注意到與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));
不過,這一說法接管秒運行。
我已將第一條語句改寫爲以下語句。這將檢索完全相同的數據。但是,此語句返回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);
有人可以澄清兩個陳述之間的區別嗎?
在第一個比較開始時間的最小值和最大值,在第二個比較開始時間的最小值和結束時間的最大值。這只是一個錯字嗎? – juharr
啊,是的,這是一個錯字。但是,在目前的情況下,它不會產生任何影響,因爲在這種情況下,結束和開始時間戳相等 –
您的分析工具是否建議在SQL Server上執行查詢所用的時間?如果是這樣,兩個執行計劃(如果有的話)有什麼區別。 –