0Pricing
SQL Academy · Pelajaran

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 ONLY

Kursor 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

  1. Memilih Kolom dan Ekspresi
  2. Penyaring WHERE: Operator Perbandingan dan Logika
  3. ORDER BY untuk Satu dan Banyak Kolom
  4. LIMIT, OFFSET, dan Dasar Paginasi
← Kembali ke SQL Academy