返回记录的特定间隔的存储过程

问题描述:

我必须在应用程序中为包含数十万条记录的表创建视图。出于显而易见的原因,我不想一次检索它们。返回记录的特定间隔的存储过程

约定是让存储过程查询数据库表,所以我的计划是让存储过程返回记录的间隔(如记录2000到3000)。我知道使用嵌套查询检索TOP的一系列记录的技巧,但据我所知,您不能将参数参数化为TOP

这将与C#应用程序中的数据集和DataTable一起使用。

我该怎么做?

您可以利用SQL Server 2008中的ROW_NUMBER。下面的查询将根据行号返回仅10行。

WITH Ordered AS (
SELECT ROW_NUMBER() OVER (ORDER BY OrderID) AS RowNumber, OrderID, OrderDate 
FROM Orders) 
SELECT * 
FROM Ordered 
WHERE RowNumber BETWEEN 21 AND 30 
+0

非常酷,它可以摆脱'TOP'技巧。 – zneak

可以将参数参数化到顶部。将参数括在(大括号)中。

如果您无论如何都需要它们,那么将它们全部放在一起就更有效率。不需要大块。

+0

我不一定需要它们。如果有人对上面几行感兴趣,我会感到惊讶,但我仍然需要支持这些功能。我一次可以拿回一千个左右。 – zneak

+0

您可以使用CTE进行分页,例如[here](http://weblogs.sqlteam.com/jeffs/archive/2007/03/30/More-SQL-Server-2005-Solutions.aspx) –