0
select top 1000 from table1.

次に、次の 1000 を続行して、テーブルから続行するにはどうすればよいですか。数百万を超えるレコード数があります。長いプロセスで情報を取得して処理する必要があります。そのため、Cursor1000 と次の 1000 を取得して使用することを考えました。他に最善の方法はありますか?

4

1 に答える 1

1

SQL Server 2005 以降を使用している場合は、row_number() 関数を使用できます。

ROW_NUMBER() を使用して、SQL Server 2005 および ASP.NET でデータをページ分割する

しかし、Billy がコメントしているように、これは一般的な SQL 関数ではありません。

カーソルは、特にユーザーが結果をページングしている場合など、切断されたクエリを実行している場合は、これを行うための非常に悪い方法です。

2005 よりも古い SQL Server を使用している場合、または一般的な方法を探している場合、一般的なアプローチは、ID インデックスを持つ一時テーブルに結果を選択し、そのテーブルからインデックス > を選択することです。 = ページ番号 * ページサイズ && インデックス < (ページ番号 * ページサイズ) + ページサイズ

于 2012-03-18T01:24:26.740 に答える