我担心性能,特别是在大表上。
在我的示例中,StatusId 是一个 IDENTIY PRIMARY KEY
。
我想知道是否有更好(更快)的方法来获取表中的最后一个条目。
public IQueryable<GaStatus> GetLastStatus()
{
return context.GaStatuses.OrderByDescending(x => x.StatusId).Take(1);
}
最佳答案
Entity Framework 为我生成以下 SQL:
SELECT TOP (1)
[Extent1].[StatusId] AS [StatusId]
FROM [dbo].[GaStatuses] AS [Extent1]
ORDER BY [Extent1].[StatusId] DESC
这看起来是获得所需结果的合理方法,尽管“Extent1”不容易阅读。参见示例 How to read the last row with SQL Server .
因此,我认为在 Entity Framework 中没有更好或更快的方法来执行此操作。
但是几乎总有办法提高给定 SQL 查询的性能。例如,查看我的特定数据库中的执行计划,ORDER BY 执行聚簇索引扫描。 This might or might not be good from a performance point of view.因此,根据您的数据库,您可以通过直接编写 SQL 而不是让 Entity Framework 为您生成它来识别性能问题并提高性能。
关于c# - 如何使用 Entity Framework 获取表中的最新行(考虑性能)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22323682/