首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用LINQ获取分页数据

使用LINQ获取分页数据
EN

Stack Overflow用户
提问于 2012-11-06 19:22:39
回答 2查看 666关注 0票数 0

我正在使用LINQ实现分页,并且我在考虑可能会遇到的性能问题。假设我的页面大小为10,一个表中有100条记录。如果我使用下面的代码

代码语言:javascript
复制
var myList = _dataContext.Person.Skip(PageNumber * PageSize).Take(10);

它会让我得到我想要的数据。现在,如果我采用此方案,并将其应用于1,000,000条记录。这会影响性能吗?在性能方面,使用sql存储过程会更有价值吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-06 19:26:20

与纯SQL文本相比,存储过程没有任何优势,纯SQL文本由Linq提供程序为您生成。

顺便说一下,对于您的查询,将生成类似以下SQL的内容

代码语言:javascript
复制
SELECT /* [t0] fields */
FROM (
    SELECT ROW_NUMBER() OVER (ORDER BY /* [t0] fields */
    FROM [Person] AS [t0]
    ) AS [t1]
WHERE [t1].[ROW_NUMBER] BETWEEN @p0 + 1 AND @p0 + @p1
ORDER BY [t1].[ROW_NUMBER]

只有当你使用myList变量(例如,调用ToList()Count(),枚举它)时它才会被执行。因此,数据库中有多少人并不重要(当然,这是db部分,而不是内存中的对象),使用存储过程也不会带来性能提升。

票数 1
EN

Stack Overflow用户

发布于 2012-11-06 19:26:16

在跳过和获取之前,它不会返回数据库中的所有行。如果在.Person之后执行ToList,那么效率会非常低。你在那里的东西应该没问题

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13249947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档