limit offset mysql | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: limit offset mysql

Sunday, April 5, 2026

limit offset mysql

🏠 Beranda Tutorial MySQL Artikel 7
🟢 Level Dasar 📚 Seri ke-7 dari 28 ⏱️ 9 Menit Baca 📄 Paginasi & Pembatasan Data

Membatasi Jumlah Data Tampilan:
Perintah LIMIT dan OFFSET

Kuasai LIMIT OFFSET MySQL untuk mengambil data secukupnya dan membangun fitur paginasi yang efisien di aplikasimu.

4
Perintah SQL
10
Contoh Query
9
Menit Baca

Kamu pernah buka toko online dan lihat daftar produk ditampilkan 10–20 item per halaman, lalu ada tombol "Halaman 2", "Halaman 3", dan seterusnya? Nah, di balik fitur sederhana itu tersembunyi dua perintah SQL yang sangat powerful: LIMIT dan OFFSET. Inilah inti dari teknik LIMIT OFFSET MySQL yang wajib dikuasai setiap developer backend.

Bayangkan database-mu seperti setumpuk kartu yang berisi ribuan data produk. Tanpa LIMIT, kamu mengambil semua kartu sekaligus — berat, lambat, dan bikin server menangis. Dengan LIMIT, kamu bilang: "Ambilkan saya 10 kartu saja." Dengan OFFSET, kamu tambahkan: "Tapi mulai dari kartu nomor 21." Simpel, namun dampaknya luar biasa untuk performa aplikasi.

Di artikel ke-7 dari seri Belajar Query SQL MySQL ini, kita akan kupas tuntas LIMIT dan OFFSET — mulai dari sintaks dasar, cara kerjanya, sampai implementasi paginasi nyata. Setelah baca artikel ini, kamu bisa langsung bikin fitur "load more" atau paginasi di proyekmu sendiri. Mari kita mulai!

🤯

Fakta Menarik

Rata-rata toko online modern menampilkan 20–50 produk per halaman. Jika toko tersebut punya 50.000 produk dan tidak menggunakan LIMIT, satu query saja bisa membebani server sebesar 500x–2500x lipat dibandingkan query dengan LIMIT yang tepat. Ini alasan mengapa hampir semua framework backend (Laravel, Django, Express) punya fitur pagination bawaan yang berbasis LIMIT OFFSET MySQL di balik layar.

1. Sintaks Dasar LIMIT: Ambil Secukupnya

LIMIT adalah instruksi ke MySQL: "Tampilkan hanya N baris dari hasil query." Analogi sederhananya seperti pramusaji yang nanya: "Mau berapa porsi?" Kamu bilang "3 porsi", ya dapat 3 — meskipun dapurnya punya stok 300 porsi.

📐 SINTAKS LENGKAP

SELECT   kolom1, kolom2, ...     -- kolom yang ingin ditampilkan
FROM     nama_tabel              -- sumber tabel data
WHERE    kondisi                 -- opsional: filter data
ORDER BY kolom ASC|DESC          -- opsional tapi SANGAT disarankan
LIMIT    jumlah_baris            -- 🔑 batasi jumlah baris tampil
OFFSET   lewati_baris;           -- 🔑 lewati N baris pertama

Kita pakai data tabel produk dari toko online yang sudah kita buat di artikel sebelumnya. Berikut seluruh datanya:

id_produk nama_produk kategori harga stok
1Sepatu Lari NikeOlahraga850.00045
2Kaos Polos PutihFashion75.000200
3Laptop Asus VivoBookElektronik7.500.00012
4Tas Ransel CanvasFashion320.00080
5Headphone SonyElektronik1.200.00030
6Dumbell 5kgOlahraga180.0000
7Kemeja FlannelFashion195.000120
8Mouse Wireless LogitechElektronik380.00060
9Topi BaseballFashion85.000150
10Matras YogaOlahraga250.00035

Sekarang, misalnya kita hanya mau tampilkan 3 produk pertama (diurutkan dari harga termurah):

💻 QUERY SQL — LIMIT DASAR

SELECT nama_produk, kategori, harga
FROM   produk
ORDER BY harga ASC
LIMIT  3;

📊 Hasil Output:

nama_produkkategoriharga
Kaos Polos PutihFashion75.000
Topi BaseballFashion85.000
Dumbell 5kgOlahraga180.000

💡 Tip Praktis

Selalu pasangkan LIMIT dengan ORDER BY! Tanpa ORDER BY, MySQL tidak menjamin urutan baris — kamu bisa dapat data berbeda setiap kali query dijalankan. Ini bahaya terutama untuk fitur paginasi yang harus konsisten.

2. OFFSET: Lewati Baris Pertama, Ambil Sisanya

Kalau LIMIT menentukan berapa banyak yang diambil, maka OFFSET menentukan mulai dari mana. Analoginya: bayangkan kamu berdiri di antrian bakso. OFFSET 3 artinya kamu nyuruh 3 orang pertama untuk dilayani dulu — kamu baru dilayani setelah mereka. Begitu pula MySQL: OFFSET 3 berarti skip 3 baris pertama, baru ambil dari baris ke-4 dan seterusnya.

Inilah kombinasi LIMIT OFFSET MySQL yang menjadi fondasi paginasi. Misalnya, kita ingin tampilkan data seperti ini: halaman 1 = 3 produk pertama, halaman 2 = 3 produk berikutnya, dan seterusnya.

💻 QUERY SQL — LIMIT + OFFSET (Halaman 2)

-- Halaman 1: lewati 0 baris, ambil 3
SELECT nama_produk, harga
FROM   produk
ORDER BY harga ASC
LIMIT 3 OFFSET 0;

-- Halaman 2: lewati 3 baris, ambil 3
SELECT nama_produk, harga
FROM   produk
ORDER BY harga ASC
LIMIT 3 OFFSET 3;

-- Cara alternatif penulisan (shorthand):
-- LIMIT offset, jumlah → LIMIT 3, 3
SELECT nama_produk, harga
FROM   produk
ORDER BY harga ASC
LIMIT 3, 3;

📊 Output Halaman 2 (OFFSET 3):

nama_produkharga
Kemeja Flannel195.000
Matras Yoga250.000
Tas Ransel Canvas320.000

⚠️ Peringatan

Hindari penulisan shorthand LIMIT offset, jumlah karena urutannya terbalik dari yang intuitif (offset dulu, baru limit). Lebih baik pakai LIMIT jumlah OFFSET offset yang lebih eksplisit dan mudah dibaca oleh orang lain yang review kode-mu.

3. Implementasi Paginasi Nyata dengan LIMIT OFFSET MySQL

Sekarang kita masuk ke bagian yang paling menarik — bagaimana LIMIT OFFSET MySQL dipakai di aplikasi nyata. Ada formula ajaib yang wajib kamu hafal untuk menghitung nilai OFFSET berdasarkan nomor halaman:

🧮 FORMULA PAGINASI

-- Rumus: OFFSET = (halaman - 1) × jumlah_per_halaman

-- Misalnya: 3 produk per halaman

-- Halaman 1 → OFFSET = (1-1) × 3 = 0
SELECT * FROM produk ORDER BY id_produk LIMIT 3 OFFSET 0;

-- Halaman 2 → OFFSET = (2-1) × 3 = 3
SELECT * FROM produk ORDER BY id_produk LIMIT 3 OFFSET 3;

-- Halaman 3 → OFFSET = (3-1) × 3 = 6
SELECT * FROM produk ORDER BY id_produk LIMIT 3 OFFSET 6;

-- Halaman 4 → OFFSET = (4-1) × 3 = 9
SELECT * FROM produk ORDER BY id_produk LIMIT 3 OFFSET 9;

📊 Visualisasi Paginasi 10 Produk (3 per halaman):

Halaman LIMIT OFFSET Data yang Ditampilkan
130Baris 1 – 3 (id 1, 2, 3)
233Baris 4 – 6 (id 4, 5, 6)
336Baris 7 – 9 (id 7, 8, 9)
439Baris 10 (id 10) — halaman terakhir

💡 Tip Praktis

Untuk mengetahui total halaman, kamu butuh total jumlah baris dengan SELECT COUNT(*) FROM produk. Total halaman = CEIL(total_baris / jumlah_per_halaman). Untuk tabel produk dengan 10 data dan 3 per halaman: CEIL(10/3) = 4 halaman.

Ringkasan: LIMIT vs OFFSET vs Kombinasi

Klausa Fungsi Contoh Use Case
LIMIT nAmbil n baris pertamaLIMIT 5Top 5 produk terlaris
LIMIT n OFFSET mSkip m baris, ambil nLIMIT 3 OFFSET 6Halaman 3 dengan 3 item
LIMIT 1Ambil hanya 1 barisLIMIT 1Cek apakah data ada (EXISTS)
LIMIT n OFFSET 0Sama dengan LIMIT nLIMIT 5 OFFSET 0Halaman 1 paginasi
LIMIT 18446744073709551615Semua baris (trik OFFSET)... OFFSET 5Ambil semua kecuali 5 pertama

Panduan Praktikum Langkah demi Langkah

1

Tambah data ke tabel produk

Tambahkan 4 produk baru (id 7–10) ke tabel yang sudah ada dari artikel sebelumnya:

INSERT INTO produk VALUES
(7,  'Kemeja Flannel',        'Fashion',    195000, 120),
(8,  'Mouse Wireless Logitech','Elektronik', 380000,  60),
(9,  'Topi Baseball',          'Fashion',     85000, 150),
(10, 'Matras Yoga',            'Olahraga',   250000,  35);
2

Coba LIMIT sederhana

Tampilkan 5 produk dengan harga termahal — cocok untuk fitur "produk unggulan":

SELECT nama_produk, harga
FROM   produk
ORDER BY harga DESC
LIMIT 5;
3

Hitung total data dan total halaman

Sebelum paginasi, kamu perlu tahu total data. Ini biasanya dijalankan sekali di awal:

-- Hitung total produk
SELECT COUNT(*) AS total_produk
FROM   produk;

-- Hasil: total_produk = 10
-- Total halaman (4 per halaman) = CEIL(10/4) = 3 halaman
4

Implementasi paginasi lengkap

Simulasi paginasi 4 produk per halaman, dikombinasikan dengan WHERE untuk filter kategori:

-- Halaman 2 dari produk Fashion (4 per halaman)
SELECT nama_produk, harga, stok
FROM   produk
WHERE  kategori = 'Fashion'
ORDER BY id_produk ASC
LIMIT  4 OFFSET 4;
-- OFFSET = (halaman 2 - 1) × 4 = 4

🔥 Insight dari Lapangan

Untuk tabel dengan jutaan baris, OFFSET yang besar (misalnya OFFSET 900000) bisa sangat lambat karena MySQL tetap harus scan semua baris sebelum baris yang di-offset. Solusinya? Gunakan teknik "cursor-based pagination" — alih-alih OFFSET 900000, simpan id baris terakhir yang ditampilkan dan pakai WHERE id > last_id. Jauh lebih cepat!

🎯 Tips & Insight

LIMIT 1 sering dipakai untuk optimasi query pengecekan eksistensi data. Daripada SELECT COUNT(*) FROM produk WHERE ... yang harus hitung semua baris, cukup SELECT 1 FROM produk WHERE ... LIMIT 1 — ini jauh lebih efisien karena MySQL berhenti begitu menemukan satu baris yang cocok.

📌 Kesimpulan

  • LIMIT membatasi jumlah baris yang ditampilkan — kunci efisiensi query di tabel besar
  • OFFSET menentukan dari baris keberapa data mulai diambil — fondasi sistem paginasi
  • Formula paginasi: OFFSET = (halaman - 1) × jumlah_per_halaman — hafal ini!
  • Selalu kombinasikan LIMIT OFFSET MySQL dengan ORDER BY untuk hasil yang konsisten dan dapat diprediksi
  • Untuk data sangat besar, pertimbangkan cursor-based pagination sebagai alternatif OFFSET yang lebih performa

LIMIT dan OFFSET adalah dua kata kecil yang dampaknya besar — mereka yang membedakan aplikasi yang lambat karena fetch semua data, dengan aplikasi yang cepat karena cerdas dalam mengambil data. Sekarang kamu sudah tahu rahasianya. Tinggal praktikkan!

💬 Yuk Diskusi!

Sudah coba implementasi paginasi dengan LIMIT OFFSET di proyekmu? Atau ada pertanyaan soal query di artikel ini? Tinggalkan komentar di bawah! Jangan lupa share artikel ini ke teman-temanmu yang baru belajar SQL, dan bookmark seri ini biar bisa dibuka kapan saja. 🚀

#MySQL #SQL #Database #Query #Tutorial #LIMIT OFFSET MySQL #Paginasi #BelajarSQL

No comments:

Post a Comment

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux