Bagikan melalui


BATAS OFFSET (kueri NoSQL)

BERLAKU UNTUK: NoSQL

Klausa OFFSET LIMIT adalah klausul opsional untuk dilewati lalu mengambil beberapa nilai dari kueri. Jumlah OFFSET dan LIMIT jumlah diperlukan dalam klausul BATAS OFFSET.

Ketika OFFSET LIMIT digunakan dengan klausul ORDER BY , tataan hasil dihasilkan dengan melakukan skip dan mengambil nilai yang diurutkan. Jika tidak ada ORDER BY klausa yang digunakan, itu menghasilkan urutan nilai deterministik.

Sintaks

OFFSET <offset_amount> LIMIT <limit_amount>

Argumen

Deskripsi
<offset_amount> Menentukan jumlah bilangan bulat item yang harus dilewati hasil kueri.
<limit_amount> Menentukan jumlah bilangan bulat item yang harus disertakan oleh hasil kueri.

Contoh

Untuk contoh di bagian ini, kumpulan referensi item ini digunakan. Setiap item menyertakan name properti.

[
  {
    "name": "Sawyer Miller",
    "team": "Leadership team"
  },
  {
    "name": "Jennifer Wilkins",
    "team": "Leadership team"
  },
  {
    "name": "Hannah Haynes",
    "team": "Leadership team"
  },
  {
    "name": "Isaac Talbot",
    "team": "Leadership team"
  },
  {
    "name": "Riley Johnson",
    "team": "Leadership team"
  }
]

Catatan

Dalam data JSON asli, item tidak diurutkan.

Contoh pertama menyertakan kueri yang hanya name mengembalikan properti dari semua item yang diurutkan dalam urutan alfabet.

SELECT VALUE {
    name: e.name
}
FROM
    employees e
WHERE
    e.team = "Leadership team"
ORDER BY
    e.name
[
  {
    "name": "Hannah Haynes"
  },
  {
    "name": "Isaac Talbot"
  },
  {
    "name": "Jennifer Wilkins"
  },
  {
    "name": "Riley Johnson"
  },
  {
    "name": "Sawyer Miller"
  }
]

Contoh berikutnya ini mencakup kueri menggunakan OFFSET LIMIT klausul untuk melewati item pertama. Batas diatur ke jumlah item dalam kontainer untuk mengembalikan semua kemungkinan nilai yang tersisa. Dalam contoh ini, kueri melewati satu item, dan mengembalikan empat yang tersisa (dari batas lima).

SELECT VALUE {
    name: e.name
}
FROM
    employees e
WHERE
    e.team = "Leadership team"
ORDER BY
    e.name
OFFSET 1 LIMIT 5
[
  {
    "name": "Isaac Talbot"
  },
  {
    "name": "Jennifer Wilkins"
  },
  {
    "name": "Riley Johnson"
  },
  {
    "name": "Sawyer Miller"
  }
]

Contoh akhir ini mencakup kueri menggunakan OFFSET LIMIT klausul untuk mengembalikan subset item yang cocok dengan melewati satu item dan mengambil tiga item berikutnya.

SELECT VALUE {
    name: e.name
}
FROM
    employees e
WHERE
    e.team = "Leadership team"
ORDER BY
    e.name
OFFSET 1 LIMIT 3
[
  {
    "name": "Isaac Talbot"
  },
  {
    "name": "Jennifer Wilkins"
  },
  {
    "name": "Riley Johnson"
  }
]

Keterangan

  • Baik hitungan OFFSET maupun hitungan LIMIT diperlukan dalam klausul OFFSET LIMIT. Jika klausul ORDER BY opsional digunakan, kumpulan hasil dihasilkan dengan melakukan melewati nilai yang diurutkan. Jika tidak, kueri mengembalikan urutan nilai tetap.
  • Biaya RU kueri dengan OFFSET LIMIT peningkatan saat jumlah istilah yang diimbangi meningkat. Untuk kueri yang memiliki beberapa halaman hasil, kami biasanya merekomendasikan menggunakan token berkelanjutan. Token berkelanjutan adalah "marka buku" untuk tempat kueri nantinya dapat dilanjutkan. Jika Anda menggunakan OFFSET LIMIT, tidak ada "marka buku." Jika Anda ingin mengembalikan halaman kueri berikutnya, Anda harus memulai dari awal.
  • Anda harus menggunakan OFFSET LIMIT saat Anda ingin melewatkan item sepenuhnya dan menyimpan sumber daya klien. Misalnya, Anda harus menggunakan OFFSET LIMIT jika ingin melompat ke hasil kueri ke-1000 dan tidak perlu menampilkan hasil 1 hingga 999. Pada backend, OFFSET LIMIT masih memuat setiap item, termasuk item yang dilewati. Keuntungan performa diukur dalam mengurangi sumber daya klien dengan menghindari pemrosesan item yang tidak diperlukan.