[英]How to get the latest row in a table using Entity Framework (considering performance)?
我關心性能,特別是在大桌子上。 在我的示例中,StatusId是IDENTIY PRIMARY KEY
。
我想知道是否有更好的方法(更快)來獲取表中的最后一個條目。
public IQueryable<GaStatus> GetLastStatus()
{
return context.GaStatuses.OrderByDescending(x => x.StatusId).Take(1);
}
實體框架為我生成以下SQL:
SELECT TOP (1)
[Extent1].[StatusId] AS [StatusId]
FROM [dbo].[GaStatuses] AS [Extent1]
ORDER BY [Extent1].[StatusId] DESC
這看起來是獲得所需結果的合理方法,盡管“Extent1”不易閱讀。 請參閱示例如何使用SQL Server讀取最后一行 。
因此,我不認為在實體框架中有更好或更快的方法。
但是幾乎總有一種方法可以改善給定SQL查詢的性能。 例如,查看特定數據庫中的執行計划,ORDER BY執行聚簇索引掃描 。 從性能的角度來看,這可能會或可能不會很好。 因此,根據您的數據庫,您可以通過直接編寫SQL來識別性能問題並提高性能,而不是讓Entity Framework為您生成它。
return context.GaStatuses.Max(x => x.StatusId);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.