我对性能感到担忧,特别是在大桌子上。
在我的示例中,StatusId是IDENTIY PRIMARY KEY
。
我想知道是否有更好的方法(更快)来获取表格中的最后一个条目。
public IQueryable<GaStatus> GetLastStatus()
{
return context.GaStatuses.OrderByDescending(x => x.StatusId).Take(1);
}
答案 0 :(得分:5)
Entity Framework为我生成以下SQL:
SELECT TOP (1)
[Extent1].[StatusId] AS [StatusId]
FROM [dbo].[GaStatuses] AS [Extent1]
ORDER BY [Extent1].[StatusId] DESC
这看起来是获得理想结果的合理方式,尽管&#39; Extent1&#39;不容易阅读。请参阅示例How to read the last row with SQL Server。
因此,我不相信在实体框架中有更好或更快的方法。
但是几乎总有一种方法可以改善给定SQL查询的性能。例如,查看特定数据库中的执行计划,ORDER BY执行聚簇索引扫描。 This might or might not be good from a performance point of view.因此,根据您的数据库,您可以通过直接编写SQL来识别性能问题并提高性能,而不是让Entity Framework为您生成它。
答案 1 :(得分:-2)
return context.GaStatuses.Max(x => x.StatusId);