4

何十万ものレコードを持つテーブルのアプリケーションでビューを作成する必要があります。明らかな理由から、一度にすべてを取得したくありません。

データベース テーブルをクエリするためのストアド プロシージャを作成するのが慣習であるため、私の計画では、レコードの間隔 (レコード 2000 から 3000 など) を返すストアド プロシージャを作成することでした。ネストされたクエリを使用して でレコードの範囲を取得するトリックは知っていますが、TOP私が知る限り、 への引数をパラメータ化することはできませんTOP

DataTableこれは、C# アプリケーションでデータセットおよび と組み合わせて使用​​されます。

どうすればいいですか?

4

2 に答える 2

4

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
于 2012-05-15T20:08:51.890 に答える
3

引数を top にパラメータ化できます。引数を (中括弧) で囲みます。

とにかくそれらすべてが必要な場合は、一度にすべてを取得する方が効率的です。チャンクする必要はありません。

于 2012-05-15T20:06:04.750 に答える