Saat menggunakan SQL mentah di Laravel, ada beberapa pertimbangan kinerja yang perlu diingat:
1. SQL Mentah vs. ORM Fasih
SQL mentah bisa lebih cepat daripada Eloquent ORM untuk kueri kompleks, terutama saat menangani kumpulan data besar. Hal ini karena Eloquent ORM menghasilkan kueri SQL secara dinamis, yang dapat menyebabkan kinerja lebih lambat dibandingkan dengan kueri SQL mentah yang dioptimalkan untuk operasi database tertentu[4].
2. Pengindeksan
Pengindeksan tabel database yang tepat dapat meningkatkan kinerja kueri secara signifikan. Hal ini sangat penting ketika menggunakan SQL mentah, karena memungkinkan Anda menentukan indeks spesifik untuk digunakan dalam kueri Anda. ORM yang fasih juga mendukung pengindeksan, tetapi mungkin tidak selalu menggunakan indeks yang paling efisien[1].
3. Optimasi Kueri
Kueri SQL mentah dapat dioptimalkan secara manual untuk meningkatkan kinerja. Ini mencakup teknik seperti menggunakan indeks, membatasi jumlah kolom yang dipilih, dan menghindari penggabungan yang tidak perlu. ORM yang fasih juga mendukung optimasi kueri, tetapi mungkin tidak selalu menggunakan metode yang paling efisien [2].
4. Koneksi Basis Data
Koneksi database yang digunakan juga dapat mempengaruhi kinerja. Misalnya, menggunakan database MySQL dengan mesin penyimpanan berkinerja tinggi seperti InnoDB dapat meningkatkan kinerja kueri dibandingkan menggunakan mesin penyimpanan yang lebih lambat seperti MyISAM[1].
5. Penggunaan Memori
Kueri SQL mentah dapat menghabiskan lebih banyak memori dibandingkan kueri Eloquent ORM, terutama saat menangani kumpulan data besar. Hal ini karena kueri SQL mentah sering kali memerlukan lebih banyak memori untuk menyimpan hasil kueri. Sebaliknya, ORM yang fasih menggunakan lebih sedikit memori dengan hanya mengambil data yang diperlukan [2].
6. Keamanan
Kueri SQL mentah dapat menimbulkan risiko keamanan jika tidak dibersihkan dengan benar. Ini karena kueri SQL mentah rentan terhadap serangan injeksi SQL. ORM yang fasih, di sisi lain, menyediakan fitur keamanan bawaan untuk mencegah serangan semacam itu[3].
7. Debug
Kueri SQL mentah bisa lebih sulit untuk di-debug dibandingkan kueri Eloquent ORM. Hal ini karena kueri SQL mentah tidak memberikan tingkat informasi debug yang sama dengan kueri Eloquent ORM. ORM yang fasih memberikan informasi rinci tentang kueri yang dijalankan, membuatnya lebih mudah untuk mengidentifikasi dan memperbaiki masalah kinerja [2].
8. Keterbacaan Kode
Kueri SQL mentah dapat membuat kode menjadi kurang mudah dibaca, terutama untuk kueri yang kompleks. ORM yang fasih, di sisi lain, menyediakan cara yang lebih mudah dibaca dan dipelihara dalam menulis kueri menggunakan antarmuka yang lancar [3].
9. Kompatibilitas Basis Data
Kueri SQL mentah bisa jadi kurang agnostik basis data dibandingkan kueri Eloquent ORM. Hal ini karena query SQL mentah dikhususkan untuk database yang digunakan, sedangkan query Eloquent ORM dapat digunakan di database yang berbeda dengan modifikasi minimal [4].
10. Pemantauan Kinerja
Kueri SQL mentah bisa lebih sulit dipantau untuk mengetahui masalah kinerja. Hal ini karena kueri SQL mentah tidak memberikan tingkat informasi pemantauan kinerja yang sama seperti kueri Eloquent ORM. ORM yang fasih memberikan informasi rinci tentang kueri yang dijalankan, membuatnya lebih mudah untuk mengidentifikasi dan memperbaiki masalah kinerja [2].
Singkatnya, kueri SQL mentah bisa lebih cepat dan efisien dibandingkan kueri Eloquent ORM untuk kueri yang kompleks, namun kueri tersebut juga menimbulkan risiko keamanan dan bisa lebih sulit untuk di-debug dan dipelihara.
Kutipan:[1] https://deliciousbrains.com/optimizing-laravel-database-indexing-kinerja/
[2] https://dev.to/jringeisen/laravel-kinerja-boost-3h4i
[3] https://laravel.io/forum/04-23-2014-eloquent-vs-raw-sql-which-is-really-better
[4] http://www.diva-portal.org/smash/get/diva2:1014983/FULLTEXT02
[5] https://stackoverflow.com/questions/47138952/laravel-eloquent-vs-selectraw-how-does-it-effect-on-query-performa