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.
Pertanyaan yang sering muncul
Ya, tanpa komitmen. Kami balas dalam 1×24 jam kerja.
Tentang Tim AnabisolutionsStudio digital dari Pekanbaru yang mengerjakan website, aplikasi, dan sistem untuk klien di Riau dan sekitarnya.
Anabisolutions

