File Database Import Ke Postgresql
File Database Import Ke Postgresql
Dvdrental.psql
https://drive.google.com/file/d/1JGDu9jE_Myu_7zYYBcKWY6F0lKR6EkeD/view?
usp=sharing
1. WITH t AS (
2. SELECT temp_cust_film_loc.*, film_lang.language_id, film_lang."name"
3. FROM (
4. SELECT temp_cust_film.*, city.city, city.city_id, country.country_id
5. FROM (
6. SELECT temp_film.*, inventory.inventory_id, rental.rental_id,
customer.customer_id, customer.first_name, customer.address_id,
customer.last_name, payment.payment_id, payment.amount, payment.payment_date
7. FROM (
8. SELECT film.film_id, film.title, category."name",
COUNT(film_actor.actor_id) num_of_actors
9. FROM film JOIN film_actor ON film.film_id = film_actor.film_id
10. JOIN film_category ON film.film_id = film_category.film_id
11. JOIN category ON category.category_id =
film_category.category_id
12. GROUP BY film.film_id, category."name"
13. ) AS temp_film, payment, inventory, rental, customer
14. WHERE temp_film.film_id = inventory.film_id AND
15. inventory.inventory_id = rental.inventory_id AND
16. rental.customer_id = customer.customer_id AND
17. customer.customer_id = payment.customer_id
18. ) AS temp_cust_film, address, city, country
19. WHERE address.address_id = temp_cust_film.address_id
20. AND city.city_id = address.city_id
21. AND country.country_id = city.country_id
22. ) AS temp_cust_film_loc, (
23. SELECT film.film_id, "language".language_id, "language"."name"
24. FROM film
25. JOIN "language" ON film.language_id = "language".language_id
26. ) AS film_lang
27. WHERE temp_cust_film_loc.film_id = film_lang.film_id
28. ORDER BY temp_cust_film_loc.title
29. )
30. SELECT * FROM t;
31.
Peserta harus membuat tiga (3) alternatif query dengan mengoptimasi query di atas.
Tiga alternatif query tersebut harus memiliki hasil yang sama dan lebih optimal dari query di
atas. Amati query plan ketiga alternatif query tersebut dengan Explain Query. Dalam
laporan, jelaskan hal-hal berikut.
Proses eksekusi masing-masing query (query plan)
Waktu eksekusi masing-masing query
Analisis perbandingan ketiga query terhadap query awal dan alasan mengapa query
bersangkutan lebih optimized
Adapun arti dari perkataan “hasil yang sama” adalah:
1. Urutan column yang dihasilkan boleh berubah.
2. Row yang dihasilkan harus sama persis dengan row hasil query di atas dan
mengikuti urutan yang sesuai dengan “ORDER BY” query di atas.
1. Proses eksekusi
1.1 Alternatif a
Menjalankan tree ini secara langsung mula-mula membentuk sebuah file yang sangat besar
yang berisi CARTESIAN PRODUCT dari keseluruhan file-file EMPLOYEE, WORKS_ON,
dan PROJECT. Bagaimanapun juga query ini hanya memerlukan satu record dari relasi
PROJECT untuk proyek 'Aquarius' dan hanya record EMPLOYEE untuk yang tanggal
lahimya setelah '31- 12-1957'.
1.2 Alternatif b
akan menunjukkan perbaikan query tree yang mula-mula menggunakan operasi-operasi
SELECT untuk mengurangi banyaknya tuple yang tampak dalam CARTESIAN PRODUCT.
Selanjutnya perbaikan dicapai dengan menukar posisi-posisi dari relasi-relasi EMPLOYEE
dan PROJECT dalam tree
1.3 Alternatif c
menggunakan informasi bahwa PNUMBER adalah key attribute dari relasi proyek dan oleh
sebab itu operasi SELECT pada relasi PROJECT akan mendapatkan kembali hanya sebuah
record tunggal. Selanjutnya query tree dapat diperbaiki dengan cara mengembalikan
beberapa operasi CARTESIAN PRODUCT yang diikuti dengan sebuah kondisi join dengan
sebuah operasi JOIN
2. Waktu eksekusi
2.1 Alternatif a : ( 12 msec)
2.2 Alternatif b : ( 10 msec)
2.3 Alternatif c : ( 8 msec)