可能重复:
What is the best way to paginate results in MS SQLServer
我正在构建存储过程,当需要时,它应该从数据库表返回给我前15行。
在用户操作上,我需要加载下一个15并在每个用户操作上加载15行。
此表有效可能非常大(超过1.000.000行)。
我是这样做的。我只是想确定我这样做是对的:@m_HospitalId int,
@m_Id int
AS
SELECT *
FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY CreatedOnDate ) AS RowNum, *
FROM dbo.Items
WHERE ItemId >= @m_Id
) AS RowConstrainedResult
WHERE HospitalId = @m_HospitalId AND RowNum > 1 AND RowNum < 15
ORDER BY RowNum
我第一次使用ROW_NUMBER()
功能,我不确定我是否做得对。
我是否总是需要传递我收到的最后一个ID才能获得下一个15项。
在应用程序中,当我收集了15个项目时,我处理了这个项目,我将{15}项目ID存储在Session
中,而来自session
的值我将通过以获得下一个项目。