Pada artikel ini saya akan memberikan materi lanjutan tentang best practice yang telah kita bahas pada 2 artikel sebelumnya yaitu 4 Tips lanjutan Best Practice Pada MYSQL Part 1 . Oke langsung saja kita coba ya .
1. Jangan Gunakan ORDER BY rand()
Inilah salah satu trik yang kedengarannya keren pada awalnya, dan banyak programmer rookie jatuh untuk jebakan ini. Anda mungkin tidak menyadari hambatan mengerikan yang bisa Anda buat saat Anda mulai menggunakan ini dalam pertanyaan Anda. Jika Anda benar-benar membutuhkan baris acak dari hasil Anda, ada banyak cara yang lebih baik untuk melakukannya. Memang dibutuhkan kode tambahan, tapi Anda akan mencegah kemacetan yang secara eksponensial memburuk saat data Anda tumbuh. Masalahnya adalah, MySQL harus melakukan operasi RAND () (yang memakan kekuatan pemrosesan) untuk setiap baris dalam tabel sebelum memilahnya dan memberi Anda hanya 1 baris.
|
1 2 3 4 5 6 7 8 9 10 11 |
// what NOT to do: $r = mysql_query("SELECT username FROM user ORDER BY RAND() LIMIT 1"); // much better: $r = mysql_query("SELECT count(*) FROM user"); $d = mysql_fetch_row($r); $rand = mt_rand(0,$d[0] - 1); $r = mysql_query("SELECT username FROM user LIMIT $rand, 1"); |
2. Menghindari SELECT *
Semakin banyak data yang dibaca dari tabel, semakin lambat query jadinya. Ini meningkatkan waktu yang dibutuhkan untuk operasi disk. Juga ketika server database terpisah dari server web, Anda akan mengalami penundaan jaringan yang lebih lama karena data harus ditransfer antar server. Ini adalah kebiasaan yang baik untuk selalu menentukan kolom mana yang Anda butuhkan saat Anda melakukan SELECT’s
|
1 2 3 4 5 6 7 8 9 10 11 |
// not preferred $r = mysql_query("SELECT * FROM user WHERE user_id = 1"); $d = mysql_fetch_assoc($r); echo "Welcome {$d['username']}"; // better: $r = mysql_query("SELECT username FROM user WHERE user_id = 1"); $d = mysql_fetch_assoc($r); echo "Welcome {$d['username']}"; // the differences are more significant with bigger result sets |
OKe smapi bertemu di artikel lanjutan ii 🙂