asp.net如何使用实体框架 (考虑到性能) 表中获得的最新的行?

发布时间: 2017/3/26 0:22:27
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我是关于性能,特别在大表上。 在我的示例 StatusId 是 IDENTIY PRIMARY KEY

我想知道是否有更好的方式 (更快) 在表中获得的最后一个条目。

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

解决方法 1:

实体框架生成以下 SQL 对我来说︰

SELECT TOP (1) 
[Extent1].[StatusId] AS [StatusId]
FROM [dbo].[GaStatuses] AS [Extent1]
ORDER BY [Extent1].[StatusId] DESC

这看起来像一个合理的方式,以得到期望的结果,虽然 'Extent1' 是不容易阅读。例如见如何读取的最后一行与 SQL 服务器

因此,我不相信还有更好或更快的办法做到这一点在实体框架中。

但是那里是几乎总是改善给定的 SQL 查询的性能。例如,我特定的数据库中执行计划来看,ORDER BY 并聚集的索引扫描这可能或不可能从性能的角度好。因此,根据您的数据库,您可能能够确定性能问题并通过直接编写 sql 语句而不是为您生成的实体框架来提高性能。

官方微信
官方QQ群
31647020