Logo AnabisolutionsAnabisolutions
Aplikasi web

Pagination API: cursor atau offset, mana yang tepat untuk aplikasi Anda?

ABTim AnabisolutionsAnalog Bina Solutions3 menit baca
Pagination API: cursor atau offset, mana yang tepat untuk aplikasi Anda?

Gunakan pagination offset untuk daftar kecil dengan lompat halaman, dan cursor untuk data besar atau yang terus bertambah. Offset menghitung ulang baris yang dilewati setiap kali, sehingga makin lambat di halaman dalam. Cursor langsung melanjutkan dari posisi terakhir sehingga waktu respons tetap stabil.

Cara kerja dan perbandingannya

Offset memakai pola LIMIT dan OFFSET. Database harus membaca lalu membuang sejumlah baris sebelum mengembalikan hasil. Cursor memakai nilai kolom terurut, misalnya id atau waktu dibuat, sebagai titik awal halaman berikutnya.

  • Offset: sederhana, mendukung lompat ke halaman tertentu, lambat pada OFFSET besar.
  • Cursor: cepat dan konsisten, tidak bisa lompat langsung ke halaman ke-50.
  • Offset rentan melewatkan atau menduplikasi item bila data berubah saat pengguna menggulir.
  • Cursor aman terhadap perubahan data selama urutan kolomnya unik dan stabil.

Memilih sesuai kasus

Dasbor admin dengan ratusan baris dan nomor halaman cocok dengan offset. Linimasa, notifikasi, log, dan daftar dengan infinite scroll lebih tepat memakai cursor.

Jika memakai cursor, urutkan dengan kolom yang diberi indeks dan tambahkan kolom penentu seri (tie-breaker) seperti id agar urutan benar-benar unik.

Batasi ukuran halaman

Tetapkan batas maksimum per halaman, misalnya 100 item, agar permintaan tidak membebani server.

Praktik tambahan

Kembalikan metadata yang jelas: cursor berikutnya, apakah masih ada data, dan jumlah item di halaman. Hindari menghitung total baris pada tabel besar kecuali benar-benar perlu, karena COUNT penuh bisa mahal.

Dokumentasikan perilaku ini di spesifikasi API agar tim frontend dan mitra integrasi tidak menebak-nebak.

Ringkasan keputusan dan angka acuan

Pilihan pagination memengaruhi performa jangka panjang. Gunakan ringkasan berikut sebagai pegangan cepat.

  • Data di bawah sekitar 10.000 baris dengan nomor halaman: offset sudah memadai.
  • Data jutaan baris atau infinite scroll: gunakan cursor.
  • Ukuran halaman umum: 20 sampai 50 item, maksimum 100.
  • Wajib ada indeks pada kolom yang dipakai untuk mengurutkan.

Uji dengan data sebesar data produksi, bukan data contoh. Perbedaan kecepatan offset dan cursor baru terlihat jelas ketika tabel sudah besar.

Kesalahan yang perlu dihindari

Kesalahan klasik adalah memakai offset pada tabel yang terus membesar tanpa indeks pengurutan. Kesalahan lain adalah mengurutkan dengan kolom yang tidak unik sehingga item bisa terlewat atau muncul ganda antarhalaman.

Hindari juga mengembalikan total jumlah baris pada setiap respons untuk tabel besar. Hitung total hanya bila memang ditampilkan, atau gunakan perkiraan agar permintaan tetap ringan.

Mau kami bantu menimbang?Ceritakan alur Anda, kami beri pendapat jujur dalam 1×24 jam kerja.
Konsultasi gratis

Pertanyaan yang sering muncul

Ya, tanpa komitmen. Kami balas dalam 1×24 jam kerja.

Suka artikel ini?
AB

Tentang Tim AnabisolutionsStudio digital dari Pekanbaru yang mengerjakan website, aplikasi, dan sistem untuk klien di Riau dan sekitarnya.

Topik:APIDatabasePerforma

Artikel menarik lainnya

Apa kata klien kami

Sangat profesional. Hasilnya melebihi ekspektasi dan komunikasi selama proyek lancar.
Logo LelangbankBudi SantosoPlatform lelang, Lelangbank
Tim yang kompeten. Custom plugin WordPress-nya pas sekali dengan kebutuhan kami.
Logo Ruang Multi TalentSarah WijayaSitus lembaga pelatihan, Ruang Multi Talent
Kualitas kode bersih dan support after sales luar biasa. Pasti kembali lagi.
Logo QuipworkAhmad RahmanDashboard internal, Quipwork

Punya masalah serupa? Ceritakan.

Konsultasi awal gratis dan tanpa komitmen. Kami balas dalam 1×24 jam kerja.

hello@anabisolutions.comJalan Nurul Yaqin No. 1, Pekanbaru, Riau, Indonesia
Chat via WhatsApp

Mulai dari satu pesan

Gratis dan tanpa komitmen.

Anda butuh apa?
Kami balas dalam 1×24 jam kerja.