0Pricing
Coding Interview Prep · Pelajaran

LIMIT, OFFSET, dan FETCH FIRST

Sintaks paginasi di MySQL, Postgres, dan SQL Server.

LIMIT, OFFSET, dan FETCH FIRST adalah pelajaran Coding Interview Prep gratis di CoddyKit. Ini adalah pelajaran 2 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 Coding Interview Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Coding Interview Prep mencakup 4 pelajaran total.

Pembagian Halaman adalah Pertanyaan Lintas Dialek

"Bagaimana Anda mengambil 10 baris pertama?" terdengar sepele sampai pewawancara menambahkan "dan lakukan dalam SQL standar" atau "sekarang dalam SQL Server." Sintaks untuk membatasi baris merupakan salah satu fitur yang paling berbeda-beda di antara database.

Pelajaran ini memetakan tiga bentuk utama: LIMIT (MySQL/PostgreSQL/SQLite), OFFSET ... FETCH (standar ANSI, SQL Server), dan TOP yang lebih lama (SQL Server).

LIMIT di MySQL dan PostgreSQL

Bentuk yang paling umum adalah LIMIT n, yang membatasi hasil hingga n baris. Bentuk ini didukung oleh MySQL, PostgreSQL, dan SQLite.

Yang penting, LIMIT diterapkan setelah ORDER BY dalam urutan eksekusi logis, sehingga Anda hampir selalu memasangkan keduanya. Membatasi tanpa mengurutkan akan memberi Anda kumpulan baris yang arbitrer.

SELECT name, salary
FROM employees
ORDER BY salary DESC
LIMIT 10;

OFFSET untuk Melewati Baris

Pembagian halaman memerlukan offset untuk melewati halaman-halaman sebelumnya. OFFSET m melewati m baris pertama sebelum batas jumlah baris diterapkan.

Untuk mendapatkan halaman 3 dengan ukuran halaman 10, Anda melewati 20 baris lalu mengambil 10 baris. Rumus umumnya adalah OFFSET = (page - 1) * page_size.

SELECT name, salary
FROM employees
ORDER BY salary DESC
LIMIT 10 OFFSET 20;

Sintaks Koma MySQL

MySQL juga menerima bentuk koma dengan dua argumen: LIMIT offset, count. Perhatikan bahwa urutannya terbalik dari bentuk kata kunci, sehingga sering membingungkan.

LIMIT 20, 10 berarti melewati 20 baris, lalu mengambil 10 baris, sama dengan LIMIT 10 OFFSET 20. Dalam wawancara, utamakan bentuk kata kunci agar lebih jelas.

SELECT name, salary
FROM employees
ORDER BY salary DESC
LIMIT 20, 10;

Standar ANSI: FETCH FIRST

Standar SQL menggunakan OFFSET ... ROWS FETCH FIRST ... ROWS ONLY. PostgreSQL, Oracle 12c+, DB2, dan SQL Server 2012+ semuanya mendukungnya.

Sintaks ini memang panjang, tetapi merupakan pilihan yang portabel. ROW dan ROWS dapat saling menggantikan; FIRST dan NEXT adalah sinonim.

SELECT name, salary
FROM employees
ORDER BY salary DESC
OFFSET 20 ROWS
FETCH FIRST 10 ROWS ONLY;

TOP SQL Server

Kode SQL Server lama menggunakan TOP n tepat setelah SELECT. Kode tersebut tidak memiliki fitur pelewatan bawaan, sehingga tidak dapat melakukan paginasi melewati halaman pertama dengan sendirinya.

Pewawancara mungkin meminta Anda mengubah TOP ke bentuk standar. SELECT TOP 10 dengan ORDER BY setara dengan FETCH FIRST 10 ROWS ONLY.

SELECT TOP 10 name, salary
FROM employees
ORDER BY salary DESC;

TOP WITH TIES

Fitur SQL Server yang menarik: TOP n WITH TIES mengembalikan baris tambahan ketika nilainya sama dengan baris terakhir pada kunci ORDER BY.

Jika tiga orang memiliki gaji tertinggi ke-10 yang sama, TOP 10 WITH TIES mengembalikan semuanya, sehingga jumlahnya mungkin 12 baris. Ini merupakan padanan FETCH FIRST ... WITH TIES dalam standar.

SELECT TOP 10 WITH TIES name, salary
FROM employees
ORDER BY salary DESC;

ORDER BY Wajib untuk Paginasi Deterministik

Poin terpenting dalam wawancara di sini: OFFSET/LIMIT tanpa ORDER BY yang deterministik tidak aman. Mesin dapat memilih baris yang berbeda untuk "halaman 2" dibandingkan dengan "halaman 1" karena urutan dasarnya tidak ditentukan.

Selalu urutkan berdasarkan kumpulan kunci yang unik atau hampir selalu unik. Jika kolom pengurutan Anda memiliki nilai duplikat, tambahkan kunci utama sebagai pemecah seri agar halaman tidak tumpang tindih atau melewatkan baris.

SELECT id, name, salary
FROM employees
ORDER BY salary DESC, id ASC
LIMIT 10 OFFSET 20;

Mengapa Paginasi OFFSET Tidak Berskala dengan Baik

Pewawancara tingkat senior akan menguji pemahaman Anda tentang kinerja. OFFSET yang besar tetap memaksa basis data menghasilkan dan membuang semua baris yang dilewati. OFFSET 100000 LIMIT 10 membaca 100.010 baris untuk mengembalikan 10 baris.

Biayanya bertambah secara linear sesuai nomor halaman, sehingga paginasi mendalam menjadi lambat pada tabel besar.

Paginasi Berbasis Kunci (Pencarian)

Alternatif yang dapat diskalakan adalah paginasi berbasis kunci: alih-alih melewati baris berdasarkan jumlah, Anda menyaring baris setelah nilai terakhir yang dilihat. Cara ini menggunakan pemindaian rentang indeks dan tetap cepat pada kedalaman berapa pun.

Anda menyimpan kunci pengurutan baris terakhir dari halaman sebelumnya, lalu meminta baris setelahnya. Menyebutkan paginasi berbasis kunci merupakan sinyal kuat tingkat senior.

SELECT id, name, created_at
FROM events
WHERE created_at < '2026-01-01 10:00:00'
ORDER BY created_at DESC
LIMIT 10;

Ringkasan Menurut Dialek

Hafalkan tabel ini agar dapat mengingatnya dengan cepat saat wawancara:

  • MySQL / Postgres / SQLite: LIMIT n OFFSET m
  • Standar / SQL Server 2012+ / Oracle 12c+: OFFSET m ROWS FETCH FIRST n ROWS ONLY
  • SQL Server lama: SELECT TOP n (tanpa OFFSET)
  • Oracle lama (sebelum 12c): saring berdasarkan ROWNUM dalam subkueri

Pemeriksaan Cepat

Pilih kueri halaman 3 yang benar untuk ukuran halaman 10.

Rangkuman

Hal-hal penting tentang paginasi:

  • LIMIT/OFFSET untuk MySQL, Postgres, SQLite; OFFSET ... FETCH FIRST untuk standar dan SQL Server modern; TOP untuk SQL Server lama.
  • OFFSET = (page - 1) * page_size.
  • Selalu pasangkan dengan ORDER BY yang deterministik dan tambahkan pemecah seri yang unik.
  • OFFSET yang besar lambat; pilih paginasi berbasis kunci untuk paginasi mendalam.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “LIMIT, OFFSET, dan FETCH FIRST” gratis?

Ya — teks lengkap “LIMIT, OFFSET, dan FETCH FIRST” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Coding Interview Prep, upgrade ke CoddyKit PRO. Kursus Coding Interview Prep mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “LIMIT, OFFSET, dan FETCH FIRST”?

Sintaks paginasi di MySQL, Postgres, dan SQL Server. Kamu berlatih Coding Interview Prep 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 Coding Interview Prep?

Tidak diperlukan pengalaman sebelumnya. Coding Interview Prep 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 2 dari 4.

Berapa lama pelajaran “LIMIT, OFFSET, dan FETCH FIRST” 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 Coding Interview Prep ini?

Ya. Setiap pelajaran Coding Interview Prep 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. Pengurutan Multi-Kolom dan Penempatan NULL
  2. LIMIT, OFFSET, dan FETCH FIRST
  3. Mengembalikan Baris Top-N secara Andal
  4. Mengurutkan Berdasarkan Ekspresi dan Alias
← Kembali ke Coding Interview Prep