Optimasi Query di Program PHP & MySQL

Tahun lalu kami mendapat masukan dari seorang hacker tentang bagaimana melakukan optimasi query database MySQL dan pemrograman PHP. Berikut adalah intisarinya. Mungkin berguna bagi pembaca.

1. Kurangi join table, gunakan partial query

Maksudnya adalah membuat query utama sesederhana mungkin supaya waktu prosesnya cepat. Jika diperlukan informasi tambahan dari tabel lain, bisa digunakan query kecil untuk mengambil data tambahan tersebut.

Manfaatnya adalah supaya dapat membagi waktu proses menjadi beberapa query sehingga resources server dapat diselipi oleh request dari user lain.

2. Urutkan tabel join

Jika terpaksa menggunakan join, maka urutan penyebutan tabel yang dijoin harus dimulai dari tabel yang memiliki jumlah data terbesar terlebih dahulu, baru kemudian diikuti yang datanya lebih sedikit.

Namun harus tetap diusahakan agar join tabel sedikit. Jika memungkinkan bisa dibuat partial query seperti poin 1.

3. Gunakan force index

Jika ada join tabel yang jumlahnya lebih dari 3 tabel, mungkin MySQL akan bingung menggunakan index yang mana. Jika MySQL tidak dapat menentukan index yang akan dipakai, maka MySQL akan mem-parsing semua data. Ini artinya sangat memboroskan resources server.

Jika query-nya memang harus begitu, maka kita perlu membantu MySQL menentukan index yang dipakai. Gunakan perintah force index untuk memaksa MySQL menggunakan index tertentu.

Jika index yang dimaksud belum dibuat, sebaiknya dibuat terlebih dahulu. Performa query yang menggunakan index akan sangat baik performanya.

4. Batasi jumlah data dalam query

Jika suatu tabel memiliki jumlah data yang sangat besar, sebaiknya kita tidak perlu mengambil kesemua data. Gunakan teknik pagination yang akan mengambil data per halaman. Misalnya sekali tampilan per halaman ada 10 data, maka kita hanya mengambil 10 data saja.

Teknik pagination ini telah diakomodasi dengan baik oleh MySQL dengan perintah limit. Gunakan perintah ini dengan baik.

5. Buat index

Buat index pada tabel yang sering digunakan dengan urutan tertentu atau di-group dengan acuan field tertentu. Atau jika sering di-join dengan tabel lain.

Gunakan pula tipe field yang relatif lebih cepat, misalnya gantikan tipe varchar dengan char(n) yang akan lebih cepat indexing-nya. Perhatikan pula encoding-nya. Gunakan encoding UTF-8 yang lebih cepat.

6. Gunakan library PHP terbaru

Pada PHP gunakan kelas mysqli_query yang lebih baru. Jangan gunakan lagi library mysql_query yang tidak lagi diteruskan pengembangannya.

7. Gunakan mysqli_fetch_assoc

Ternyata kita perlu memilih fungsi yang lebih efisien. Misalnya gunakan mysqli_fetch_assoc dari pada mysqli_fetch_array. Walau pun cara penggunaannya sama dan bisa digunakan untuk hasil yang sama, namun mysql_fetch_array lebih boros dalam struktur datanya.

8. Test query sebelum dipakai dalam program

Nah ini termasuk sangat penting. Kita perlu mengetest query yang kita buat sebelum digunakan dalam program. Test query bisa menggunakan phpmyadmin, tora, emma, MySQL workbench, dll. Pada utility2 ini telah tersedia fasilitas untuk mengetahui berapa waktu yang digunakan mysql untuk memproses query. Jika query membutuhkan waktu lebih dari 1 detik, maka boleh dibilang query-nya perlu dioptimasi.

Penutup

Demikian beberapa catatan hasil pertemuan dengan seorang hacker setahun yang lalu. Tentu saja catatan ini masih bisa diperdebatkan. Atau mungkin Anda ada masukan tambahan? Semoga bermanfaat.

One thought on “Optimasi Query di Program PHP & MySQL

Leave a Reply to desta Cancel reply

Your email address will not be published. Required fields are marked *