select top 1000 from table1.
次に、次の 1000 を続行して、テーブルから続行するにはどうすればよいですか。数百万を超えるレコード数があります。長いプロセスで情報を取得して処理する必要があります。そのため、Cursor
1000 と次の 1000 を取得して使用することを考えました。他に最善の方法はありますか?
SQL Server 2005 以降を使用している場合は、row_number() 関数を使用できます。
ROW_NUMBER() を使用して、SQL Server 2005 および ASP.NET でデータをページ分割する
しかし、Billy がコメントしているように、これは一般的な SQL 関数ではありません。
カーソルは、特にユーザーが結果をページングしている場合など、切断されたクエリを実行している場合は、これを行うための非常に悪い方法です。
2005 よりも古い SQL Server を使用している場合、または一般的な方法を探している場合、一般的なアプローチは、ID インデックスを持つ一時テーブルに結果を選択し、そのテーブルからインデックス > を選択することです。 = ページ番号 * ページサイズ && インデックス < (ページ番号 * ページサイズ) + ページサイズ