Cara Mengatasi N+1 Problem pada Laravel

Oleh Rama Nusa Bakti di 25 Sep 2025 | 11:50
Rama Nusa Bakti

Rama Nusa Bakti

Siswa
Postingan: 1
Anggota sejak: 9 Sep 2025

Pada Artikel ini saya akan membahas apa itu N+1 Problem dan bagaimana ia terjadi di Laravel, serta solusi terbaik untuk menghindarinya. Salah satu masalah yang sering muncul dalam pengembangan software adalah N+1 Problem. Masalah ini tidak hanya membuat aplikasi berjalan lebih lambat, tetapi juga memboroskan sumber daya server. 

Secara sederhana, N+1 Problem adalah kondisi di mana aplikasi menjalankan terlalu banyak query ke database secara berulang karena pengambilan data yang tidak efisien. Query pertama (1) digunakan untuk mengambil data utama. Query tambahan (N) dijalankan berulang untuk setiap item hasil dari query pertama. Akibatnya, total query menjadi N+1, yang dapat meningkat dratis seiring bertambahnya data.

Contoh

Misalkan kita memiliki dua model User dan Post, dengan relasi one to many (satu user memiliki banyak post). Beriut contoh kodenya:

Kita melihat sekilas tidak ada masalah. Namun, coba perhatikan query yang terjadi:

  1. Query pertama untuk mengambil semua data users

  2. Untuk setiap user, Laravel menjalankan query tambahan untuk mengambil posts milik user tersebut.

Jika ada 100 user, maka akan ada 1 query users + 100 query posts = 101 query. Inilah yang disebut dengan N+1 Problem.

Dampak N+1 Problem

  1. Lambat: Semakin banyak data, semakin banyak query yang harus dijalankan.

  2. Membebani server: Query berulang meningkatkan beban CPU dan memory.

  3. Tidak efisien: Database harus memproses permintaan yang sebenarnya bisa digabungkan.

Solusi untuk Mengatasi N+1 Problem

Salah satu cara mengatasi N+1 Problem yaitu menggunakan Eager Loading dengan with(). Daripada kita mengambil data relasi saat dibutuhkan, kita bisa memuatnya langsung sejak awal.

Dengan cara ini, hanya ada 2 query:

  1. Query untuk mengambil semua users.

  2. Query untuk mengambil semua posts yang terkait dengan user.

Hasilnya, waktu eksekusi bisa jauh lebih cepat dan beban server berkurang signifikan.

N+1 Problem adalah jebakan umum ketika menggunakan ORM seperti Eloquent di Laravel. Masalah ini terjadi karena query relasi dieksekusi berulang untuk setiap data, yang menyebabkan aplikasi lambat dan tidak efisien. Solusinya adalah dengan memanfaatkan eager loading menggunakan with() atau bahkan join untuk kebutuhan tertentu. Dengan ini, kita dapat menghindari N+1 Problem dan menjaga performa aplikasi kita tetap optimal.

25 Sep 2025 | 11:50
0 Suka

Laporkan

Silakan jelaskan laporan secara singkat dan jelas.