我已經寫在LINQ到實體查詢:查詢執行時間與在SQL Server
db.Table<Operation>()
.Where(x => x.Date >= dateStart)
.Where(x => x.Date < dateEnd)
.GroupBy(x => new
{
x.EntityId,
x.EntityName,
x.EntityToken
})
.Select(x => new EntityBrief
{
EntityId = x.Key.EntityId,
EntityName = x.Key.EntityName,
EntityToken = x.Key.EntityToken,
Quantity = x.Count()
})
.OrderByDescending(x => x.Quantity)
.Take(5)
.ToList();
的問題是,它使用EF在應用程序執行時需要4秒。但是,當我從該查詢對象(使用Log)中創建純SQL查詢並直接在SQL Server上激發它時,則需要0秒。這是一個已知的問題嗎?
您是否嘗試過使用探查器將其縮小?如果沒有'Take(5)',我會懷疑創建對象,但是5個對象應該很快...... – ChrFin
您能推薦這樣一個分析器嗎? – cryss
我們在這裏使用dotTrace。 – ChrFin