在SQL Server和EF中获取并跳过

时间:2012-06-19 14:26:33

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

我有一个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吗?

1 个答案:

答案 0 :(得分:1)

在后续通话中运行得更快吗?这可能只是第一次问题。看看这个链接。

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