結果のページネーションはskip
とlimit
パラメータを利用して実現できます。たとえば、ビューから最初の10レコードを取得するには:
?limit=10
次の10レコードは、次のように指定して取得することができます:
?skip=10&limit=10
サーバでは、skip
オプションは、クエリが実行され、skip
で指定された数までレコードの出力を文字通りスキップすることを繰り返して動作し、そのあとlimit
が指定されていればlimit
で指定されたレコードになるまでデータを記憶するものを返します。
skip
により大きな値を使用したページネーションをするとき、レコードのスキップの繰り返しによるオーバヘッドが重大な問題となることがあります。より良い解決策は、(limit
パラメータを使用した)最初のクエリでのドキュメントIDの出力を追跡することです。
そして最後に出現したドキュメントIDを特定するためにstartkey_docid
を使用し、そのレコードをスキップし、次の10レコードを出力します。
それゆえ、ページングの順番はこのようになります、最初のクエリでは:
?startkey="carrots"&limit=10
生成された出力での最後のドキュメントIDを記憶し、次のように使用してください:
?startkey="carrots"&startkey_docid=DOCID
&skip=1&limit=10
startkey_docid
を使用するとき、startkey
パラメータを検索する情報を特定するために指定しなければなりません:startkey_docid
パラメータを使用することによって、Couchbase ServerはドキュメントIDを特定するためのB-Treeインデックスを使用してスキップします。これは、上記のskip/limitの例よりもはるかに高速です。