在sql 2008中使用大表进行高效分页

Kum*_*mar 15 sql sql-server paging performance pagination

对于具有> 1,000,000行且可能还有更多的表格!

我自己没有做任何基准测试,所以想得到专家的意见.

看一下row_number()上的一些文章,但它似乎有性能影响

还有哪些选择/替代方案?

Dea*_*ing 18

我们使用row_number()效果很好,并没有真正的性能问题.我们的分页查询的基本结构如下所示:

WITH result_set AS (
  SELECT
    ROW_NUMBER() OVER (ORDER BY <ordering>) AS [row_number],
    x, y, z
  FROM
    table
  WHERE
    <search-clauses>
) SELECT
  *
FROM
  result_set
WHERE
  [row_number] BETWEEN a AND b
Run Code Online (Sandbox Code Playgroud)

它对于我们在> 1,000,000行的表上工作正常.

  • 正如我所说,我们实际上在具有> 1,000,000条记录的表格中使用它.结果返回<100ms(当然,取决于搜索条件).当然,性能将取决于服务器负载,以及您的特定使用场景. (2认同)