【发布时间】:2014-06-03 18:15:02
【问题描述】:
我刚开始在 SQL Server 2012 中进行分页,我试图在应用分页之前获取总行数,但我遇到的问题是我的视图中有太多的函数调用大大减慢速度。
我查看了这篇博文,结果发现在数据库中没有完整数据集的情况下运行需要 39 秒的查询。
Get total row count while paging
SELECT *
, COUNT(TaskId) OVER()
FROM TaskVersionView
WHERE (.. ~10 predicates here .. )
ORDER BY StartDate
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY
如果没有 COUNT,则需要
我原以为 SQL 会对其进行优化,使其仅计算 TaskId 而不是调用函数,但似乎并非如此,因为:
SELECT COUNT(TaskId)
FROM TaskVersionView
耗时
【问题讨论】:
标签: sql sql-server pagination sql-server-2012