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)
实体框架为我生成以下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为您生成它.