SQL Server 2012からページング処理のクエリがシンプルに! ORDER BY句でOFFSETとFETCH NEXTを指定して実現

データベースから表示する件数だけを抽出するページング処理のときのクエリがシンプルに書けるようになりました。

ページング処理は、多量にあるデータの特定の件数だけを表示するために、select文で何件から何件までと指定する処理です。この処理を入れることで、データを一覧で見る画面などで、ページング処理を実装できます。

データベースレベルのページングをSQL Serverで実現する

例えば、1ページあたり20件のデータが表示されるWebサービスの画面で、3ページ目を表示する場合、次のようなクエリを書く必要がありました。

これはSQL Server 2008 R2までの場合です。サブクエリを使って、ROW_NUMBERで行番号を付与してから、その行番号で41行目から60行目と指定する必要がありました。

ところが、SQL Server 2012以降では、次のように書くことができます。

サブクエリはなくなり、order byの後ろにoffsetと書いて読み飛ばす行数を指定します。さらにfetch nextと書いて取得する行数を書いてあげるとページング処理が実装できます。

とても、シンプルなクエリになりました。