25

以前の row_number (SQL Server 2008) と、SQL Server 2012 によって提供される新しい OFFSET + FETCH (SQL Server 2012) ページング メカニズムに関していくつか質問があります。

  1. row_number() の制限は何ですか?
  2. OFFSET + FETCH は、row_number() の改善された代替品ですか?
  3. 一方を使用するだけで十分で、もう一方を使用できないユースケースはありますか?
  4. 2つの間にパフォーマンスの違いはありますか? はいの場合、どちらが推奨されますか?

ありがとう。

4

3 に答える 3

20

使用しROW_NUMBER()ても問題なく動作します。必要以上の作業です。実際のクエリの周りに「スケルトン」CTEを記述し、ROW_NUMBER()列を出力セットに追加してから、それをフィルタリングする必要があります。

new を使用するOFFSET / FETCH方が簡単です。もちろん、次の 2 つのリンクからわかるように、パフォーマンスも向上しています。

全体として: SQL Server 2012を使用している場合は、ページングではなく必ず使用する必要がありますOFFSET/FETCHROW_NUMBER()

于 2013-05-05T07:34:45.870 に答える
0

ページングの 3 つの手法を紹介するこの記事を見つけ、それらの結果をグラフで比較しました。従うべきアプローチを決定するのに役立つ場合があります。

SQL Server 2012 でのページング機能のパフォーマンス

説明したすべてのページング方法は、少量のレコードでは問題なく機能しますが、大量のデータではうまく機能しません。

于 2014-02-23T07:42:06.560 に答える