SQLServer:实现准确的分页(sqlserver真分页)

SQLServer的分页的实现是比较实用的,它能够提供更精确的数据分页能力。SQL Server分页的实现主要分为两种方式:

(一)Top-N分页

Top-N 是比较有名的分页方法,它从结果集中返回前N个记录。使用Top-N分页时,用户必须指定行号列,以此作为起始点,才能正常使用。下面是一个示例页面查询语句:

SELECT TOP 50 *

FROM (SELECT ROW_NUMBER() OVER(ORDER BY ID) AS RowNumber, *

FROM Article order by ID) as Drv

WHERE RowNumber > 0 and RowNumber

其中 RowNumber 是行号列, 既可以以 ID 字段为排序起点保证分页的准确性,也可以指定特定的起始行号。

(二)OFFSET FETCH 分页

OFFSET FETCH 关键字可以用在 SQL Server 2012 及其之后的版本中。它的作用是从 ORDER BY 语句指定的起始位置偏移n条结果后取指定的数量的结果,可以大大简化分页的处理。下面是一个示例页面查询语句:

SELECT *

FROM Article

ORDER BY ID

OFFSET 0 ROWS FETCH NEXT 50 ROWS ONLY

在以上 SQL 语句中, OFFSET 0 表示从结果集的第 0 条结果开始,FETCH NEXT 50 表示取其之后的50条记录, 由此实现了从第0条开始, 取50条结果的分页效果。

通过以上的比较,可以发现OFFSET FETCH 很好的解决了Top-N多数时候需要指定行号列的缺点,能够提供更精确的分页效果。对于 SQL Server 2012 及以上版本来说,OFFSET FETCH 是最好的分页方式。


数据运维技术 » SQLServer:实现准确的分页(sqlserver真分页)