SQL Server分页查询2008 R2上的大型数据集

SQL Server分页查询2008 R2上的大型数据集,sql,sql-server,Sql,Sql Server,我有一个SQLServer2008R2数据库,我有一个包含大量行但只有几列的表。该表目前有84m条记录 我正在寻找查询此表以获取分页数据集的最有效方法。真的,我每页只需要30条记录 我无法将OFFSET/FETCH用于此版本的SQL Server。我也没有管理员权限以任何方式更改表 我发现的另一种方法是使用子查询和行编号(),但这似乎是在返回子集之前查询整个数据集。这确实很慢 查询此表的分页结果的最佳(最快)方法是什么?在对行进行编号之前减小集合的大小(通过任何适当的方式)将是最佳选择。毕竟,没

我有一个SQLServer2008R2数据库,我有一个包含大量行但只有几列的表。该表目前有84m条记录

我正在寻找查询此表以获取分页数据集的最有效方法。真的,我每页只需要30条记录

我无法将
OFFSET
/
FETCH
用于此版本的SQL Server。我也没有管理员权限以任何方式更改表

我发现的另一种方法是使用子查询和
行编号()
,但这似乎是在返回子集之前查询整个数据集。这确实很慢


查询此表的分页结果的最佳(最快)方法是什么?

在对行进行编号之前减小集合的大小(通过任何适当的方式)将是最佳选择。毕竟,没有人会费力地翻页84M行,所以计算第200000页上的行是没有意义的。即使查询返回的行总数很大,通常也只与第一页或最后一页相关;任何更多的都只意味着用户需要一个更具体的过滤器。上传您的
行号()的执行计划,并尝试添加到您的问题的链接。与OFFSET/FETCH类似,持续时间将取决于索引和结果集的偏移量。我认为Jeroen提供了最好的anwser,但也许您可以利用分区表和使用来查看以下文章: