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

时间:2010-03-15 04:12:02

标签: sql sql-server performance pagination paging

表格为> 1,000,000行,可能还有更多!

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

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

有哪些其他选择/替代方案?

1 个答案:

答案 0 :(得分: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

对于使用&gt;的表格,它适用于我们1,000,000行。