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

Gib*_*boK 5 c# linq asp.net performance entity-framework

我关心性能,特别是在大桌子上.在我的例子中,StatusId是一个IDENTIY PRIMARY KEY.

我想知道是否有更好的方法(更快)来获取表中的最后一个条目.

  public IQueryable<GaStatus> GetLastStatus()
    {
        return context.GaStatuses.OrderByDescending(x => x.StatusId).Take(1);
    }
Run Code Online (Sandbox Code Playgroud)

And*_*nde 5

实体框架为我生成以下SQL:

SELECT TOP (1) 
[Extent1].[StatusId] AS [StatusId]
FROM [dbo].[GaStatuses] AS [Extent1]
ORDER BY [Extent1].[StatusId] DESC
Run Code Online (Sandbox Code Playgroud)

这看起来是获得所需结果的合理方法,尽管"Extent1"不易阅读.请参阅示例如何使用SQL Server读取最后一行.

因此,我不认为在实体框架中有更好或更快的方法.

但是几乎总有一种方法可以改善给定SQL查询的性能.例如,查看特定数据库中的执行计划,ORDER BY执行聚簇索引扫描.从性能的角度来看,这可能会或可能不会很好.因此,根据您的数据库,您可以通过直接编写SQL来识别性能问题并提高性能,而不是让Entity Framework为您生成它.