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

标签 c# asp.net performance linq entity-framework

我担心性能,特别是在大表上。 在我的示例中,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/

相关文章:

c# - Visual Studio 调试器 - 是我的问题还是这个调试器本身充满了错误?

c# - 使用 C# 从 Mettler Toledo 秤设备读取数据

javascript - 如何使用 jquery/javascript 在 asp.net c# 中禁用单选按钮单击上的链接按钮

c - openmp的性能

c# - 更有效地使用 XMLReader

php - 处理序列化数据与添加更多字段 - php - mysql

c# - 字符串插值中的 Linq ForEach

c# - 回发后asp.net动态添加用户控件保存值

c# - 21 岁和 25 岁之间的日期选择器 wpf

c# - .NET Core Web API 路由模板中的可选参数