2016年05月17日

SQLServerでのページング機能(Offset Fetch)

SQLServerでページング機能を実装したいときに、データの何番目〜何番目までを取得する、というSQL文を書きたい場合があります。
SQLServer2012から、これを簡潔にかける構文があることを、今日知りました。

OrderBy句に対して、さらにOffsetとFetchの句を組み合わせることで、簡単に書くことができます。
詳しくは、https://technet.microsoft.com/ja-jp/library/ms188385(v=sql.110).aspx

昔はちょっと技巧的なやり方をしていましたが、これならとてもシンプルです。

ただ、大量データに対して行う場合は注意が必要です。
OrderBy句を指定する必要があるので、テーブルの全件ソートが発生します。
SQLServer内部では、テーブルの内容を一度すべてソートした後、OffsetとFetchで指定した範囲のデータを取り出します。

インデックスを適切に設定しておかないと、応答が返ってこないということになりかねないので、設計には十分注意が必要ですね。
posted by キヨ at 21:54| Comment(0) | TrackBack(0) | SQLServer
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/175334379
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック