Monday, February 21, 2011

Hindari Penggunaan JOIN table di MYSQL

Kali ini sedang menghandle database MYSQL dengan ukuran data yang cukup besar >15MB dimana data-data ini diakses di website yang sudah lama online.
Salah satu module yang digunakan, mengambil data dengan cara menjoin 2 table, dimana masing-masing table berisi data yang cukup banyak, tiap table ukuran kira-kira 3MB. Ketika module ini dijalankan aksesnya lama sekali bahkan membuat web server hang dan tidak bisa diakses lagi. Ternyata biang masalahnya adalah karena men-join 2 table dengan ukuran data yang sangat besar itu tidak baik, karena ketika dijoin maka dia akan mencocokkan satu persatu data sebanyak jumlah data di masing-masing table, sehingga membutuhkan memori dan waktu yang banyak.
Solusi, jangan menggabungkan table, jika kondisi data besar, tapi gunakan function terpisah untuk mengambil data di table lain, dimana di function ini tentunya menerima parameter data yang akan dibutuhkan saja. Dan ternyata metode seperti ini sangat optimal dan aksesnya berjalan normal.

3 comments:

akbar said...

bro... minta tlg banget solusi untuk menghindari join table data besar.. memakai function, maksudnya gimana ya, atau contohnya seperti apa ya... ditunggu pencerahannya bro, makasih banget

akbar said...

bro... minta tlg banget solusi untuk menghindari join table data besar.. memakai function, maksudnya gimana ya, atau contohnya seperti apa ya... ditunggu pencerahannya bro, makasih banget

Harkat Zamasi said...

@Isham: Selain tips yang saya tuliskan di atas, bisa juga mengoptimalkan beban query dengan:
1. Join table gunakan LEFT/RIGHT JOIN, jangan INNER JOIN. Kedua operation ini sangat mempengaruhi performance query. Bila tidak harus menggunakan INNER, maka gunakanlan LEFT/RIGHT join saja.
2. Bila data pada table berukuran besar, bisa juga dioptimalkan dengan menggunakan index
3. Atau bisa juga dengan partition.

Semoga membantu.