Optimasi SUBQUERY
OPTIMASI
QUERY
Optimasi LEFT
JOIN DAN RIGHT
JOIN
KELOMPOK
3
ADRIANTI RUSLI
(18)
(42)
(58)
OPTIMASI QUERY
Optimasi Query merupakan sebuah proses memilih
query plan yang paling efisien dari banyak strategi
pengaksesan query
Apa saja yang menyebabkan akses ke database kurang
maksimal?
Kenapa optimasi perintah SQL penting?
Index Merge
Optimization
Index Merge method adalah metode yang biasanya
digunakan untuk mengambil baris dengan beberapa
pencarian range dan menggabungkan hasil mereka
menjadi satu
CONTOH
OPTIMASI LEFT
JOIN DAN RIGHT
JOIN
SELECT *
FROM a JOIN b LEFT JOIN c ON (c.key=a.key)
LEFT JOIN d ON (d.key=a.key)
WHERE b.key=d.key;
Untuk LEFT JOIN, jika kondisi WHERE bernilai salah untuk baris yang
bernilai NULL, LEFT JOIN diubah menjadi normal join. Misalnya,
kondisi WHERE akan bernilai salah dalam query berikut jika
t2.column1 bernilai NULL:
SELECT *
FROM t1 LEFT JOIN t2 ON (column1)
WHERE t2.column2=5;
Oleh karena itu, lebih aman untuk mengkonversi query ke normal join:
SELECT *
FROM t1, t2 WHERE t2.column2=5
AND t1.column1=t2.column1;
Hal ini dapat dilakukan lebih cepat karena MySQL dapat menggunakan
tabel t2 sebelum tabel t1 jika hal itu akan menghasilkan query plan yang
lebih baik.
OPTIMASI SUBQUERY
Materialization subquery
Optimizer menggunakan materialisasi subquery sebagai strategi yang
memungkinkan pengolahan subquery lebih efisien.
Materialisasi mempercepat eksekusi query dengan menampilkan hasil
subquery sebagai tabel sementara, biasanya di memori. Ketika MySQL
pertama kali membutuhkan hasil subquery tersebut, hasilnya di materialisasi
ke dalam tabel sementara.
Berikutnya setiap kali hasilnya diperlukan, MySQL mengacu lagi ke tabel
sementara. tabel diindeks dengan hash indeks untuk membuat pencarian
cepat dan murah. indeksnya unik, yang membuat tabel menjadi lebih kecil
karena tidak memiliki duplikat.
Sebuah optimasi yang sangat berguna adalah untuk memberi tahu subquery
bahwa satu-satunya baris yang menarik adalah baris di mana inner expression
inner_expr sama dengan outer_expr. Hal ini dilakukan dengan menekan
persamaan yang sesuai ke klausa WHERE dalam subquery. Perbandingan
tersebut dikonversi ke:
ANY QUESTION ?