【发布时间】: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