SQLServerでページング機能を実装したいときに、データの何番目〜何番目までを取得する、というSQL文を書きたい場合があります。
SQLServer2012から、これを簡潔にかける構文があることを、今日知りました。
OrderBy句に対して、さらにOffsetとFetchの句を組み合わせることで、簡単に書くことができます。
詳しくは、https://technet.microsoft.com/ja-jp/library/ms188385(v=sql.110).aspx
昔はちょっと技巧的なやり方をしていましたが、これならとてもシンプルです。
ただ、大量データに対して行う場合は注意が必要です。
OrderBy句を指定する必要があるので、テーブルの全件ソートが発生します。
SQLServer内部では、テーブルの内容を一度すべてソートした後、OffsetとFetchで指定した範囲のデータを取り出します。
インデックスを適切に設定しておかないと、応答が返ってこないということになりかねないので、設計には十分注意が必要ですね。
2016年05月17日
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/175334379
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック
http://blog.sakura.ne.jp/tb/175334379
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック