Selasa, 25 Desember 2012

SUBQUEY

Perkuliahan terakhir mata kuliah Sistem Basis Data, bapak dosen membahas tentang materi Subquery. Apa itu Subquery??

Subquey?? gampangnya, kita bisa mengartikan subquery adalah query didalam query. Tapi pengertian dari buku, subquery merupakan statement SELECT yang dilampirkan sebagai klausa dalam SQL.

Penulisannya adalah sebagai berikut :
SELECT.....             -->  main query
FROM.....
WHERE....... ( SELECT .......        --> subquery
                         FROM   ........ 
                         WHERE ......  )

Subquery mengembalikan nilai ke main query. Manfaat Subquery adalah untuk mendapatkan suatu nilai yang tidak diketahui.

Contoh subquery untuk menampilkan nama mahasiswa dan nilai pada tabel mhs dan ambilmk yang memiliki nilai tertinggi dalam kodemk dengan kode A02.

SELECT mhs.namamhs, ambilmk.nilai FROM mhs, ambilmk WHERE mhs.nim = ambilmk.nim AND ambilmk.kodemk = "A02" AND ambilmk.nilai = (SELECT max(nilai) FROM ambilmk WHERE ambilmk.kodemk = "A02").

Subquery banyak kolom
Pada subquery dengan banyak kolom, tiap baris dari main query dibandingkan dengan nilai dari subquery multiple-row dan multiple-colom. Pembanding kolom dalam subquery banyak kolom dapat berupa pambanding berpasangan dan pembanding tidak berpasangan.

Penggunaan subquery dalam klausa FROM
Query dapat diletakan didalam klausa FROM untuk membentuk tabel temporer. Query seperti ini dikenal dengan istilah inline view, karena tidak membentuk objek database.

Ekspresi scalar subquery
Ekspresi scalar subquery merupakan subquery yang mengembalikan hanya satu nilai kolom dari satu baris. Scalar subquery pada standart SQL-92 hanya terbatas pada :
  • SELECT statement (klausa FROM dan WHERE saja)
  • Daftar value dari statement INSERT
Pada standart SQL-99, scalar subquery dapat digunakan dalam :
  • Kondisi dan ekspresi sebagai bagian dari perintah DECODE dan CASE
  • Semua klausa dari SELECT statement kecuali GRUP BY
Korelasi Subquery
Korelasi subquery dapat digunakan untuk pemrosesan baris per baris. Tip-tiap subquery dijalankan sekali untuk seriap baris dari outer query.
Korelasi subquery juga dapat digunakan untuk Meng-update baris pada satu table berdasarkan pada baris dari table yang lain, korelasi seperti ini dinamakan dengan Korelasi Update.
 Korelasi subquery juga dapat digunakan untuk manghapus baris pada satu table berdasarkan pada baris dari table lain, korelasi seperti ini dinamakan Korelasi Delete.

Penggunakan operator EXIST dan NOT EXIST
digunakan untuk menguji keberadaan dari baris dalam himpunan hasil dari subquery. Jika ditemukan maka pencarian tidak dilanjutkan dalam inner query dan kondisiditandai TRUE. Jika tidak ditemukan, maka kondisi ditandai FALSE dan kondisi pencarian dilanjutkan dalam inner query.

Penggunaan klausa WITH
kita dapat menggunakan blok query yang sama dalam statement SELECT pada saat terjadi lebih dari sekali dalam complex query. Klausa WITH mendapatkan hasil dari blok query dan menyimpannya dalam tablescaape temporer kepunyaan user. Klausa WITH dapat meningkatkan performansi.


Optimasi Query
 
Data  yang  tersimpan  dalam  jumlah  yang  sangat  besar,  Terdapat  aturan  system  informasi  dalam  organisasi,  system  basis  data  dilihat  sebagai  bagian  system  informasi dalam aplikasi berskala besar.
Untuk meningkatkan unjuk kerja  tidak hanya desain  logik saja yang diperhatikan  tapi juga struktur fisik penyimpanan data. Penggunaan  Index  pada  database  secara  tepat,  dapat  digunakan  untuk  meningkatkan kecepatan akses data.  
Informasi  tentang  jalur  akses yang digunakan oleh database untuk melaksanakan query dalam database Oracle dapat dengan menggunakan perintah explain plan.  Selain  optimasi  perintah  SQL,  faktor  lain  yang  berpengaruh  terhadap  kecepatan  akses data adalah optimasi aplikasi dan penggunaan cluster dan index.  
Pada sebuah database engine semisal pada database Oracle kecepatan akses data  dipengaruhi  oleh  beberapa  komponen  arsitektur  pembentuknya  seperti  shared  pool, buffer cache, dan redo log buffer.
Optimasi  aplikasi  tergantung  pada  efisiensi  penggunaan  obyek  yang mendukung kecepatan  akses  seperti  index  atau  cluster,  dan  normalisasi  data  pada  desain database.

Tidak ada komentar:

Posting Komentar