Halaman

Kamis, 20 Desember 2012

SUBQUERY


SUBQUERY
Subquery merupakan sebuah query didalam query. Pengertian dari subquery adalah sebuah pernyataan SELECT yang dilampirkan sebagai klausa dalam SQL pernyataan yang lain. subquery digunakan untuk menentukan suatu nilai yang belum diketahui.
Contohnya adalah : SELECT ..... FROM ..... WHERE... (SELECT...FROM ....WHERE)
Yang tercetak hitam adalah sebuah main query dan yang tercetak merah adalah sebuah subquery. Pada pernyataan diatas subquey dijalankan terlebih dahulu kemudian menjalankan main query jadi main query akan dijalankan ketika sudah mendapat inputan dari subquery tersebut.

Contoh penulisan dari subquery adalah :
SELECT select_list
FROM table
WHERE expr operator (SELECT select_list
                                      FROM table) ;

Pembanding kolom dalam subquery banyak kolom dapat berupa,yaitu:
  1. Pembandingan berpasangan
  2. Pembandingan tidak berpasangan.
Pada penulisan Query bisa diletakkan di dalam klausa FROM untuk membentuk tabel temporer atau disebut juga dengan inline view,  karena  tidak membentuk object database.

Ekspresi scalar subquery adalah 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 subqueries dapat diguanakan dalam :
·  Kondisi dan ekspresi sebagai bagian dari perintah DECODE dan CASE.  
·  Semua klausa dari SELECT Statement kecuali GROUP BY.

Korelasi Subquery
Korelasi  SubQuery  digunakan  untuk  pemrosesan  baris  per  baris. Tiap-tiap  subquery dijalankan sekali untuk setiap baris dari outer query.  Prosesnya adalah sebagai berikut :
Pada proses  korelasi  dimulai  dengan mengambil  baris  dari  outer  query,  kemudian  inner  query  dijalankan  dengan  menggunakan  nilai  baris  kandidat,  kemudian  nilai  dari  inner  query  digunakan  untuk  melakukan  kualifikasi  atau mendiskualifikasi baris kandidat.
Fungsi Korelasi Subquery
Korelasi  Subquery  juga  dapat  digunakan  untuk  meng-update  baris  pada  satu  table berdasarkan pada baris dari table yang lain, korelasi seperti itu dinamakan dengan  Korelasi Update. Korelasi Subquery juga dapat digunakan untuk menghapus baris pada satu table  berdasarkan  pada  baris  dari  table  yang  lain,  korelasi  seperti  itu  dinamakan  dengan Korelasi Delete.
Operator EXISTS  dan NOT EXIST digunakan  untuk menguji keberadaan  dari baris dalam himpunan hasil dari subquery.  
Jika ditemukan, maka :
·  pencarian tidak dilanjutkan dalam inner query dan kondisi ditandai TRUE.
Jika tidak ditemukan, maka :
·  Kondisi ditandai FALSE dan kondisi pencarian dilanjutkan dalam inner query.
With
Dengan menggunakan 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 tablespace  temporer kepunyaan user.  Klausa WITH dapat meningkatkan performansi.

Optimasi
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