LIMIT, OFFSET, dan Dasar Paginasi
Buat halaman untuk kumpulan hasil besar dengan LIMIT dan OFFSET, pahami pertukaran kinerja, dan gunakan paginasi berbasis kunci untuk pengguliran yang stabil.
LIMIT, OFFSET, dan Dasar Paginasi adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.
LIMIT: Membatasi Hasil
LIMIT n mengembalikan paling banyak n baris:
SELECT * FROM products
ORDER BY created_at DESC
LIMIT 10;OFFSET: Melewati N Baris Pertama
OFFSET k melewati k baris pertama:
-- Rows 11–20 (the second page of 10):
SELECT * FROM products
ORDER BY created_at DESC
LIMIT 10 OFFSET 10;Paginasi = LIMIT + OFFSET
Pola klasik berdasarkan nomor halaman:
-- Page p (1-based), page size s:
SELECT * FROM articles
ORDER BY published_at DESC
LIMIT s OFFSET (p - 1) * s;Mengapa OFFSET Menjadi Lambat
OFFSET tetap membaca setiap baris yang dilewati secara internal:
- Halaman 1 dari 10 → membaca 10 baris
- Halaman 1000 dari 10 → membaca 10.000 baris
- Halaman 1.000.000 → membaca sepuluh juta baris
OFFSET memiliki kompleksitas O(offset). Untuk halaman yang sangat jauh, cara ini tidak dapat digunakan.
Paginasi Berbasis Kunci ("metode pencarian")
Buka halaman berikutnya dengan mengingat kunci pengurutan terakhir yang dilihat:
-- First page:
SELECT * FROM articles
ORDER BY published_at DESC, id DESC
LIMIT 20;
-- Next page — pass the last seen (published_at, id):
SELECT * FROM articles
WHERE (published_at, id) < ($1, $2)
ORDER BY published_at DESC, id DESC
LIMIT 20;Mengapa Paginasi Berbasis Kunci Lebih Cepat
Paginasi berbasis kunci menggunakan pemindaian rentang indeks: langsung melompat ke baris setelah baris terakhir yang dilihat, membaca N baris, lalu selesai. Biayanya O(ukuran halaman), terlepas dari seberapa jauh halaman tersebut.
LIMIT Tanpa ORDER BY Tidak Deterministik
Aturan praktis: selalu pasangkan LIMIT dengan ORDER BY. Jika tidak, basis data dapat mengembalikan baris yang berbeda pada setiap pemanggilan.
-- Wrong — results may vary between runs:
SELECT * FROM events LIMIT 10;
-- Right:
SELECT * FROM events ORDER BY id DESC LIMIT 10;Jumlah Total dan Paginasi
Antarmuka pengguna terkadang memerlukan jumlah total baris. Kueri COUNT(*) terpisah adalah cara paling sederhana, tetapi dapat membutuhkan biaya besar pada tabel berukuran besar:
SELECT COUNT(*) FROM articles WHERE author_id = $1;
-- Alternative for huge tables: estimate from pg_class.reltuples or use approximate counts.FETCH FIRST (SQL Standar)
Sintaks SQL standar untuk LIMIT:
SELECT * FROM products
ORDER BY id
FETCH FIRST 10 ROWS ONLY;
-- With offset:
-- OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLYKursor untuk Kumpulan Hasil yang Sangat Besar
Untuk mengekspor jutaan baris, gunakan kursor basis data atau penggerak streaming, bukan perulangan LIMIT/OFFSET:
BEGIN;
DECLARE big_cursor CURSOR FOR
SELECT * FROM events ORDER BY id;
FETCH 1000 FROM big_cursor;
-- ...
CLOSE big_cursor;
COMMIT;Kapan OFFSET Boleh Digunakan
OFFSET sesuai untuk halaman yang tidak terlalu jauh (halaman 1–10 dalam antarmuka pengguna) atau tabel kecil. Untuk paginasi yang sangat jauh, gulir tanpa akhir, atau API, gunakan paginasi berbasis kunci.
Ringkasan
LIMIT dan OFFSET melakukan paginasi pada kumpulan hasil.
- Selalu gabungkan dengan ORDER BY
- OFFSET lambat pada halaman yang jauh — beralihlah ke paginasi berbasis kunci untuk halaman besar
- FETCH FIRST adalah padanan standar
Pemeriksaan Singkat
Manakah cara paling efisien untuk melakukan paginasi jauh ke dalam tabel besar?
Pertanyaan yang Sering Diajukan
Apakah pelajaran “LIMIT, OFFSET, dan Dasar Paginasi” gratis?
Ya — teks lengkap “LIMIT, OFFSET, dan Dasar Paginasi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “LIMIT, OFFSET, dan Dasar Paginasi”?
Buat halaman untuk kumpulan hasil besar dengan LIMIT dan OFFSET, pahami pertukaran kinerja, dan gunakan paginasi berbasis kunci untuk pengguliran yang stabil. Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai SQL Academy?
Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “LIMIT, OFFSET, dan Dasar Paginasi” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?
Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Memilih Kolom dan Ekspresi
- Penyaring WHERE: Operator Perbandingan dan Logika
- ORDER BY untuk Satu dan Banyak Kolom
- LIMIT, OFFSET, dan Dasar Paginasi