Query Optimization
dalam menggunakan query SQL ada beberapa prinsip yang harus dilakukan agar memberikan hasil yang optimal. Ketika kamu menjalankan query, database tidak langsung bekerja di hard disk. Prosesnya:
- Query diterima dan di-parse
- Query plan dibuat dan dioptimalkan
- Data yang diperlukan dimuat dari disk ke RAM (buffer pool)
- Eksekusi dilakukan di RAM
- Hasil disimpan di RAM (sementara) dan dikembalikan ke user
Use SELECT Only What You Need – Hindari penggunaan SELECT *
, set kolom yang memang dibutuhkan saja. Penggunaan ini membaca seluruh data → boros RAM.
Use Indexes Wisely – penggunaan index terlalu banyak dapat menyebabkan lambat pada saat insert dan update. Index disimpan dalam bentuk struktur pohon (B-tree atau Hash). .
Filter Early With WHERE – filter data lebih awal menggunakan where untuk menghindari pengambilan lebih banyak data di awal.
Optimize JOINs – Pastikan kolom yang digunakan dalam JOIN diindeks, gunakan jenis JOIN yang sesuai, coba kurangi ukuran data sebelum melakukan JOIN
Avoid Functions on Indexed Columns in WHERE – jangan menggunakan query semacam WHERE YEAR(created_at) = 2024
LIMIT Large Queries – Gunakan LIMIT saat menguji atau jika Anda hanya membutuhkan sebagian data.
Use Appropriate Data Types – Gunakan tipe data yang ringkas dan sesuai. Seperti gunakan INT alih-alih BIGINT, atau gunakan VARCHAR(50) bukan VARCHAR(255) untuk kolom yang tidak menggunakan sepanjang itu.
Avoid Correlated Subqueries If Possible – Mengubah subquery menjadi JOIN atau CTE bisa mengurangi beban RAM drastis.
--
untuk proofing bahwa query optimal dan sesuai dengan ekpektasi, gunakan explain.
Use EXPLAIN (or EXPLAIN ANALYZE) – Use it to see how the query is executed. This helps detect: Full table scans, Missing indexes, Join strategy issues. ( Menunjukkan rencana pemakaian RAM )