ページング クエリにはさまざまな方法がありますが、ここではそれらを紹介します。
SQL Server には Set Rowcount 設定があり、指定された行数に応答した後にコマンド処理が停止されるため、この機能を使用して数千万行レベルで高いパフォーマンスを実現できます。データテーブルのページ分割されたクエリ。まず実装方法について説明します。
1. インデックスが作成されたテーブルに主キー フィールド ID (整数型) があると仮定します。このフィールドに従ってページング用のデータを取得します。
2. @PageSize にページサイズを入れます
3. @CurrentPage に現在のページ番号を入れます。
4. 取得したいデータの先頭の行までレコード ポインタを素早くスクロールする方法、これが重要です。 Set RowCount を使用すると、簡単に実装できます。
5. フェッチするデータの先頭の行までレコード ポインタを正常にスクロールし、その行にレコードの ID フィールドの値を記録すると、Top と条件を使用して、簡単に次の値を取得できます。指定されたデータのページ。もちろん、Set RowCount を使用する場合でも、Top を使用しますか?
Set Rowcount がどのように役立つかを見てみましょう:
Declare @ID int
@MoveRecords int を宣言します
--@CurrentPageと @PageSize は受信パラメータです
Set @MoveRecords=@CurrentPage * @PageSize+1
-- 次の 2 行により、取得するデータの行まですばやくスクロールし、ID を記録できます。
行数を設定 @MoveRecords
Table1 から @ID=ID を選択 ID 順に並べる
Rowcount @PageSize を設定
--トラブルを減らすために * を使用するのは嫌いですが、説明の便宜上、一時的に使用します。
Select * From Table1 Where ID>=@ID ID 順に並べ替え
行数を 0 に設定します
1,000W レコードを含むテーブルで、ページを 100 ページ (1 ページあたり 100 エントリ) まですばやくめくって、それがどれほど速いかを試してみてください。
出典: 南峰ブログ
http://name-lh.cnblogs.com/archive/2006/03/08/346059.html