Dalam pengembangan aplikasi berbasis PHP yang berinteraksi dengan database MySQL, penggunaan fungsi untuk mengambil hasil query sangat penting. Dua fungsi yang sering digunakan adalah mysqli_fetch_array dan mysqli_fetch_assoc. Keduanya memiliki kelebihan dan kekurangan, terutama ketika bekerja dengan data dalam jumlah besar. Artikel ini akan membahas perbedaan antara kedua fungsi ini dan bagaimana mereka mempengaruhi kinerja saat menangani dataset besar.



1. Memahami mysqli_fetch_array dan mysqli_fetch_assoc

mysqli_fetch_array: Fungsi ini mengembalikan baris hasil query dalam bentuk array. Secara default, fungsi ini dapat mengembalikan hasil dalam dua format:

  • Indeks numerik: Array dengan indeks berbasis angka, misalnya $row[0], $row[1].
  • Indeks asosiatif: Array dengan indeks berbasis nama kolom, misalnya $row['column_name'].

$result = mysqli_query($conn, $query);

while ($row = mysqli_fetch_array($result)) {

    echo $row['column_name']; // Bisa menggunakan nama kolom atau indeks numerik

}


  • mysqli_fetch_assoc: Fungsi ini mengembalikan baris hasil query dalam bentuk array asosiatif, di mana kunci array adalah nama kolom dari tabel database. 

$result = mysqli_query($conn, $query);
while ($row = mysqli_fetch_assoc($result)) {
    echo $row['column_name']; // Hanya menggunakan nama kolom
}

2. Perbedaan Kinerja pada Dataset Besar

Ketika menangani dataset besar, pemilihan antara mysqli_fetch_array dan mysqli_fetch_assoc dapat mempengaruhi kinerja aplikasi. Berikut adalah analisis perbedaan kinerja dari kedua fungsi tersebut:

  • Memory Usage:
    • mysqli_fetch_array: Menggunakan memori lebih banyak karena mengembalikan dua jenis array (indeks numerik dan asosiatif). Ini berarti setiap baris data menyita lebih banyak ruang memori dibandingkan dengan mysqli_fetch_assoc.
    • mysqli_fetch_assoc: Hanya mengembalikan array asosiatif, sehingga lebih hemat memori. Ini membuat mysqli_fetch_assoc lebih efisien dalam hal penggunaan memori saat menangani dataset besar.

  • Kecepatan Eksekusi:

    • mysqli_fetch_array: Karena mengembalikan dua jenis array, proses ini sedikit lebih lambat dibandingkan dengan mysqli_fetch_assoc. Namun, perbedaan ini mungkin tidak terlalu signifikan kecuali dalam kasus dataset yang sangat besar atau dalam situasi dengan permintaan yang sangat tinggi.
    • mysqli_fetch_assoc: Mengembalikan hasil query lebih cepat dalam situasi di mana hanya diperlukan akses berdasarkan nama kolom, karena tidak ada overhead tambahan dari indeks numerik.

  • Kompleksitas Kode:

    • mysqli_fetch_array: Memberikan fleksibilitas karena dapat mengakses data baik dengan nama kolom atau indeks numerik. Namun, fleksibilitas ini dapat menyebabkan kode yang kurang konsisten dan lebih sulit dipelihara jika tidak digunakan dengan hati-hati.
    • mysqli_fetch_assoc: Lebih sederhana dan jelas karena hanya menggunakan nama kolom. Ini membuat kode lebih mudah dibaca dan dipelihara, serta mengurangi kemungkinan kesalahan.

3. Kasus Penggunaan

Jika Memori adalah Prioritas: Gunakan mysqli_fetch_assoc jika Anda bekerja dengan dataset besar dan memerlukan penggunaan memori yang efisien.

Jika Akses Data Fleksibel: Gunakan mysqli_fetch_array jika Anda memerlukan akses fleksibel ke data dengan menggunakan baik nama kolom maupun indeks numerik, dan ukuran dataset tidak terlalu besar.

Jika Kecepatan Eksekusi Penting: mysqli_fetch_assoc biasanya lebih cepat karena mengurangi overhead dari pengembalian dua jenis array. Untuk aplikasi dengan kebutuhan kinerja tinggi, ini bisa menjadi pilihan yang lebih baik.


4. Kesimpulan

Kedua fungsi, mysqli_fetch_array dan mysqli_fetch_assoc, memiliki kelebihan dan kekurangan masing-masing. Untuk dataset besar, mysqli_fetch_assoc sering kali lebih efisien dalam hal penggunaan memori dan kecepatan eksekusi. Namun, jika Anda memerlukan akses data yang fleksibel dengan kebutuhan khusus, mysqli_fetch_array dapat menjadi pilihan yang lebih baik meskipun dengan pengorbanan penggunaan memori yang lebih tinggi. Memilih fungsi yang tepat bergantung pada kebutuhan spesifik aplikasi Anda dan bagaimana data diakses dalam kode Anda.