【问题标题】:Take and Skip in SQL Server and EF在 SQL Server 和 EF 中采取和跳过
【发布时间】:2012-06-21 14:51:34
【问题描述】:

我有一个 ASP.NET MVC 4 应用程序,我正在使用 EF。我有一个表和一个 SQL 视图(视图显示该表中的行加上一些不重要的数据(~ 1000 条记录)),有 ~ 400.000 条记录。 当我在 EF 中显示数据时需要 25 秒

    MVCAppEntities db = new MVCAppEntities();
    public ActionResult Index()
    {
        return View(db.vvItem.OrderBy(n => n.Code).Skip(20).Take(40).ToList());
    }

在 SQL Server Management Studio 中,此查询需要 0-1 秒

select  code, quantity, name, price
from (
    select *,
           row_number() over(order by code) as rn
    from vvItem       
 ) as T
where T.rn between 20 and 40

:为什么 EF 查询这么慢?我应该让 SP 来做 Skip and Take 吗?

【问题讨论】:

  • where T.rn between 20 and 40Skip(20).Take(40) 不同
  • 您是否尝试运行 SQL 分析器来查看您的 EF 查询实际执行的 SQL 查询?
  • 我只想快速执行查询。如何使 EF 查询更快地工作?
  • SQL查询执行快,只有EF查询慢。如何测试(和改进)EF 执行时间?
  • 什么是db 以及您在何时/何地创建了该实例?

标签: sql-server asp.net-mvc entity-framework skip-take


【解决方案1】:

它在后续调用中运行得更快吗?这可能只是第一次出现问题。看看这个链接。

http://www.dotnetspark.com/kb/3706-optimizing-performance.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 2011-07-18
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多