【问题标题】:Recommended strategy for ASP.NET paging with large data, and optional sortingASP.NET 大数据分页推荐策略,可选排序
【发布时间】:2012-12-31 01:20:07
【问题描述】:

我目前正在做的项目需要从大量数据中检索/搜索,流程如下:-

  1. 输入关键字并从大约 500,000 名成员中搜索
  2. 仅检索前 6 个成员。
  3. 允许根据成员国或性别进行排序。 要求:使用 EF5.0

数据当前使用UserControl显示,DataBinded使用Repeater,将通过UpdatePanel更新下一个,上一个按钮等。最好但不限于使用EF5.0,我对其他选项开放(例如 SqlDataReader)并手动将其转换回成员对象。

我当前的解决方案是通过使用页码跳过调用实体,即

members = context.Members.Where(这里的条件).Skip(页码* size).Take(size);

我的问题是:我的策略是工业/常用的方法吗?有类似经验的朋友可以和我分享一下性能/优化方面,有没有其他更好的方法呢?

【问题讨论】:

  • 我的问题是:我的策略是工业/通用的方法吗?有类似经验的可以和我分享一下性能/优化方面,有没有其他更好的方法呢?

标签: asp.net ado.net paging


【解决方案1】:

我使用存储过程而不是 LINQ 查询获得了非常好的性能。由于查询元数据生成/sql 翻译,这可以节省性能。如果您要返回大型结果集,禁用更改跟踪也是一个不错的选择。

【讨论】:

  • 如果我错了,请纠正我,这是否意味着使用 ROWNUMBER() 并传入页码,大小作为参数?
  • 是的;我在 SQL Server 中使用表变量以所需的排序顺序存储记录的键,并使用给定的起始索引和页面大小返回子集。它对我来说工作得非常快。
【解决方案2】:

我正在使用使用 ROWCOUNT 的数据库分页,请在此处查看 http://www.4guysfromrolla.com/webtech/042606-1.shtml,它提供了非常好的性能,包括排序和分页在内的 200000 条记录。

【讨论】:

    猜你喜欢
    • 2012-08-30
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2019-07-20
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    • 2013-02-28
    相关资源
    最近更新 更多