Skip to main content
IT Tutorial 02 July 2026 ~3 menit baca

Optimasi Database MySQL: Tips Query Cepat untuk Jutaan Data

Query lambat adalah musuh performa aplikasi. Pelajari cara membaca EXPLAIN, teknik indexing composite, pagination berbasis cursor, dan strategi caching Redis untuk MySQL yang menangani jutaan baris data.

R
Reyzone Dev Team
Technical Writer ยท Reyzone

Kenapa Query Kamu Lambat?

Ketika aplikasimu tumbuh dari ribuan ke jutaan baris, query yang tadinya responsif bisa mendadak terasa lambat. Masalah ini hampir selalu bisa dipecahkan dengan teknik yang tepat.

EXPLAIN: Senjata Utama Debug Query

EXPLAIN SELECT u.name, COUNT(o.id) as total_orders
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE u.created_at >= "2026-01-01"
GROUP BY u.id;

Yang perlu diperhatikan dari output EXPLAIN:

  • type: Idealnya ref atau range. Hindari ALL (full table scan)
  • rows: Semakin kecil, semakin efisien
  • Extra: Using filesort adalah tanda bahaya

Teknik Indexing yang Benar

-- Composite index sesuai pola query
-- Untuk: WHERE user_id = ? AND status = ? ORDER BY created_at
CREATE INDEX idx_user_status_date ON orders(user_id, status, created_at);

-- Aturan: kolom untuk equality (=) dahulu, lalu range/sort

Pagination Efisien untuk Data Besar

-- BURUK: OFFSET besar sangat lambat di halaman 100+
SELECT * FROM posts ORDER BY id DESC LIMIT 20 OFFSET 2000;

-- BAGUS: Cursor-based pagination
SELECT * FROM posts
WHERE id < :last_seen_id
ORDER BY id DESC
LIMIT 20;

Caching dengan Redis

$redis    = new Predis\Client();
$cacheKey = "top_products_" . date("Y-m-d");
$products = $redis->get($cacheKey);

if (!$products) {
    $products = DB::select("SELECT ... FROM products ...");
    $redis->setex($cacheKey, 3600, json_encode($products));
} else {
    $products = json_decode($products, true);
}

Checklist Optimasi Database

  • Gunakan EXPLAIN untuk setiap query yang lambat
  • Index semua kolom yang sering digunakan di WHERE dan JOIN
  • Pilih kolom spesifik, jangan SELECT *
  • Gunakan cursor pagination untuk data jutaan baris
  • Cache query agregat dengan Redis
  • Aktifkan slow query log MySQL untuk monitoring

Kesimpulan

Optimasi database adalah keahlian yang membedakan developer biasa dari yang berpengalaman. Dengan indexing yang tepat, cursor pagination, dan caching Redis, kamu bisa meningkatkan performa ratusan kali lipat tanpa upgrade hardware.

Bagikan Tutorial Ini:
Kembali ke Daftar Tutorial