Pengenalan
Page korang load slow? Rekod berjuta-juta? Client bising kena tunggu lebih 10 saat untuk page load?
Say no more.
Perkongsian ilmu kali ni pasal query tuning. Bukan ecu kenderaan je boleh tune untuk bagi laju, database & query pun boleh. Even 1 saat tunggu pun dah boleh masuk kategori slow.
Jadi, jom belajar cara lajukan query.
Optimize select
- Jangan guna select *
- Aku berani bet, kau tak guna pun semua rekod. Max pun lah, maybe 90% field guna. 10% off masih berbaloi untuk buat select panjang2.
- Pastikan tak select benda sama dua kali
Optimize penggunaan functions
Certain functions create temporary table untuk process data sebelum return value. High cost, better buat cara lain.
- DISTINCT ➡️ lagi laju guna GROUP BY
- GROUP_CONCAT ➡️ boleh buat satu query lain yg simple, then process, merge both array of object
- ORDER BY ➡️ sort dkt frontend shj, backend tak perlu
Optimize subquery
Masa join table, dia akan select all field. Better select terus field apa yg kita nak masa join tu.
- JOIN (SELECT f_name, m_name FROM parents) p ON s.parent_id = p.id
Kecilkan scope data masa join. Tambah where condition terus.
- JOIN (SELECT sessions, program_id FROM programs_students WHERE sessions = 2026 AND org_id = 1470) ps ON s.id = ps.student_id
Optimize where condition
Pass variable yang sama type dalam where. Kalau tak, cost naik sikit sebab nak kena convert.
- WHERE id = ‘123’ ➡️ WHERE id = 123
Specific value lebih laju dari functions. Guna = lagi laju dari guna LIKE, YEAR, DATE etc.
- YEAR(attend_date) = 2026 ❌
- attend_date >= ’2026-01-01’ and attend_date <= ‘2026-12-31’ ✅
Optimize indexing
Tambah index dkt column yang selalu guna WHERE.
- Contoh yang biasa takde index sekarang: doc_no, deleted_at.
Kalau ada beberapa column yg memang guna in pair, bolah buat satu composite index. Satu index, dua column.
- Index tak boleh banyak sangat, nanti insert & update pula jadi berat.
Conclusion
Boleh cuba praktikkan ilmu yang dah dipelajari, semoga database laju berdesup & semoga client tak bising sistem slow. Amin.
Comments
Post a Comment