簡體   English   中英

如何使用Entity Framework獲取表中的最新行(考慮性能)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM