7

Sql Server 2008 では、ストアド プロシージャによるデータベース ページングに多くのオプションを使用できます。たとえば、ここここを参照してください。

オプション:

  1. ROW_NUMBER() 関数
  2. 行数
  3. カーソル
  4. 一時テーブル
  5. ネストされた SQL クエリ
  6. その他

ROW_NUMBER() を使用したページングには、パフォーマンスの問題があることが知られています。

どのページング方法が最高のパフォーマンスを発揮するか教えてください (JOIN を含む大きなテーブルの場合)。

可能であれば、関連記事へのリンクも提供してください。

ありがとうございました。

4

2 に答える 2

3

答えなければならない 1 つの質問は、行の総数をエンド ユーザーに表示するかどうかです。最後のページの番号を計算するには、最後の行番号も必要です。

その情報がなくても構わない場合は、一時テーブルが適切なオプションです。プライマリキーを選択し、LIMIT を使用して、関心のあるキーまでのキーを取得できます。これを正しく行うと、典型的な使用例では最初の数ページのみが取得されます。

最後のページ番号が必要な場合は、ROW_NUMBER() を使用できます。LIMIT 句を使用できないため、一時テーブルを使用してもそれほど高速ではありません。この戦略は ROW_NUMBER() 計算と同等になります。

于 2009-07-03T11:36:12.697 に答える
0

次のクエリを使用して行数を取得できます。

WITH data AS
(
      SELECT ROW_NUMBER() OVER (order by memberid ) AS rowid, memberid 
      FROM Customer
)
SELECT *, (select count(*) from data) AS TotalCount 
FROM data 
WHERE rowid > 20 AND  rowid <= 30
于 2011-04-22T11:18:00.167 に答える