【发布时间】: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 40与Skip(20).Take(40)不同 -
您是否尝试运行 SQL 分析器来查看您的 EF 查询实际执行的 SQL 查询?
-
我只想快速执行查询。如何使 EF 查询更快地工作?
-
SQL查询执行快,只有EF查询慢。如何测试(和改进)EF 执行时间?
-
什么是
db以及您在何时/何地创建了该实例?
标签: sql-server asp.net-mvc entity-framework skip-take