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:

  1. Query diterima dan di-parse
  2. Query plan dibuat dan dioptimalkan
  3. Data yang diperlukan dimuat dari disk ke RAM (buffer pool)
  4. Eksekusi dilakukan di RAM
  5. 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 )