【问题标题】:Improve pagin count method speed with Linq on large amount of data在大量数据上使用 Linq 提高分页计数方法的速度
【发布时间】:2014-09-14 01:14:17
【问题描述】:

我有一个计数方法来对网格进行分页,它返回一个大约 200 万的数字,我不想通过这样的查询来提高它的速度,但是在 Linq 上:

SELECT count(*)
FROM (SELECT ROW_NUMBER() OVER (ORDER BY id) AS Row, Id
FROM myTable ) t
WHERE Row between 0 and (pageSize*visiblePages)+1 -- The number 1 is to check if there is another set of 1 or more pages

我的问题是,我不需要为显示我有 11 页的页面计算 200 万。只检索 10 个结果的方法工作正常,但我不能用 row_number 计数

【问题讨论】:

  • 我不需要为显示我有 11 页的页面计算 200 万页。 你能再清楚一点吗?如果你不计算有多少页,你不需要计算,否则你就计算。
  • 为什么不直接从 myTable 中执行 select count() 并查看 count() 是否为 > pageSize*visiblePages
  • 问题是myTable中的count()很慢,需要20多秒。列已编入索引,但我必须进行一些连接才能进行计数。我不需要知道我在每个页面上显示的页面更多。例如,我在 DB 上有 30 页,但我当前的页面显示从第 1 页到第 10 页,我不需要高于 100 的计数(10 页,每页 10 个结果)
  • Count(*) 不会比 ROW_NUMBER() OVER (ORDER BY id) AS Row, Id 慢

标签: c# .net linq count pagination


【解决方案1】:

也许您可以像这样使用 LINQ 的 TakeSkiphttp://msdn.microsoft.com/en-us/library/bb386988%28v=vs.110%29.aspx

同时检查这个 VS 库的 MVC 寻呼机控件:http://en.webdiyer.com/

【讨论】:

    猜你喜欢
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多