LINQ 是否跳过&拿有不错的表现吗?

发布于 2024-09-17 19:15:24 字数 153 浏览 3 评论 0原文

我们查询了大约40个与客户相关的数据字段。该查询通常会返回大量记录,例如最多 20,000 条。我们只想使用前 500 个结果。然后,我们只希望能够一次翻阅 10 个。

LINQ 是否跳过并为此采取合理的方法?使用这种方法与以其他方式手动执行相比是否存在任何潜在的性能问题?

We have a query for about 40 data fields related to customers. The query will often return a large amount of records, say up to 20,000. We only want to use say around the first 500 results. Then, we just want to be able to page through them 10 at a time.

Is LINQ skip and take a reasonable approach for this? Are there any potentnialy performance issues with using this approach vs doing it manually some other way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

傲世九天 2024-09-24 19:15:25

不带 Skip()Take() 使用 TOP 子句生成 SQL。

Take()Skip 使用 ROW_NUMBER() 生成 SQL,如图 此处

另外,我建议使用优秀的 LINQPad 工具或 LINQ to SQL 日志记录来检查生成的查询。

Take() without Skip() generates SQL using TOP clause.

Take() with Skip generates SQL using ROW_NUMBER() as shown here.

Also, I'd recommend to use excellent LINQPad tool or LINQ to SQL logging to check generated queries.

诗化ㄋ丶相逢 2024-09-24 19:15:25

是的,如果您使用的是 SQL Server 2005+,它将生成使用 ROW_NUMBER() 函数来提高分页效率的 SQL(与 Scott 在本博文中使用)。

Yes, if you're on SQL Server 2005+ it'll generate SQL that uses the ROW_NUMBER() function to make paging efficient (not unlike the SQL that Scott uses in this blog post).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文