Rusydan Muslih <[EMAIL PROTECTED]> wrote:
>
> Kasus
>
> Table A
> ColA ColB ColC ColD
> 1 B1 C1 D1
> 2 B2 C2 D2
> .
> .
> .
> 1000000 BXX CXX DXX
>
> Table B
> BKode BUr
> B1 UrB1
> B2 UrB2
> .
> .
> .
> BXX UrBXX
>
> Table C Sama dengan table B
>
> Kita ingin mencari sebuah data dari Table A yang
>memiliki ID (ColA)
> tertentu, lengkap dengan uraian untuk B dan C. Querynya
>bagaimana?
>
> B. Unoptimized Query
> --> select TableA.ColA, TableB.BUr, TableC.CUr
> --> from TableA
> --> Inner join TableB on (TableA.ColB = TableB.BKode)
> --> Inner join TableC on (TableA.ColC = TableC.CKode)
> --> where TableA.ColA = XXX
> Ketika mendapatkan query seperti ini, DB Server akan
>melakukan hal berikut :
> 1. Ambil semua data Table A (1000000 record)
> 2. Ambil semua data Table B (XXX record)
> 3. Ambil semua data Table C (YYY record)
> 4. Cross Reference semua data di TableA dengan Record
>yang
> bersangkutan pada Table B
> Jumlah operasi persamaan (Jumlah Record A * JUmlah
>REcord B) ..
> Berapa Coba??
> 5. Hal yang sama dilakukan untuk Table A dengan Table
>C... Udah berapa
> kali nih
> perbandingan yang dilakukan???
> 6. Filter hasil yang dilakukan dengan syarat kolom A =
>dengan satu
> angka yang menghasilkan satu record...
>
> Moral of the story: bayangkan banyaknya perbandingan
>yang dilakukan
> hanya untuk mendapatkan satu record.
> Note: - Ambil bukan berarti dikirm ke client, ini hanya
>berarti data
> diambil kememori.
> - Langkah diatas berdasar pada asumsi, DB Server
>tidak
> melakukan operasi optimasi (database besar seperi
>Oracle, DB2 dan yang
> lain, cara kerja diatas akan berubah sesuai dengan
>tingkat optimasi
> yang dilakukan).
>
> B. Optimized Query
> --> select Tab1.ColA, , TableB.BUr, TableC.CUr
> --> from
> --> (select ColA, ColB, ColC from Table A where ColA =
>XXX) as Tab1
> --> Inner join TableB on (Tab1.ColB = TableB.BKode)
> --> Inner join TableC on (Tab1.ColC = TableC.CKode)
>
> Nah sekarang apa yang terjadi dengan query ini:
> 1. Scan TabelA, Ambil data yang sesuai dengan filter
> 2. Ambil semua data Table B (XXX record)
> 3. Ambil semua data Table C (YYY record)
> 4. Cross Reference semua data di TableA dengan Record
>yang
> bersangkutan pada Table B
> Jumlah operasi persamaan (Jumlah Record A * JUmlah
>REcord B)
> Karena Jumlah record Tab1 hanya 1 maka operasi
>perbandingan hanya
> berlangsung sebanyak record TableB)
> 5. Hal yang sama dilakukan untuk Table A dengan Table
>C... Udah berapa
> kali nih
> perbandingan yang dilakukan???
> 6. Query selesai. muncullah record idaman hati dengan
>cepat... memori
> aman... cpu OK.
>
> Note:
> Mengenai operasi pembandingan sekali lagi ada asumsi
>bahwa table tidak
> berindex kalau ber-index maka pebandingan dilakukan
>kepada table
> index:
>
> Query "B" hanya bisa dilakukan pada DBMS yang mensupport
>full select
> (select on select) atau apapun namanya.
>
> Moral OF The Story:
> --> Filter dilakukan sesegera mungkin untuk meringankan
>beban server
> sehinggan tidak melakukan operasi pembandingan yang
>sebenarnya tidak
> perlu.
>
> Analogi:
> Supaya pemerintahan bersih, pilihlah dari awal
>orang-orang yang
> bersih... Iya nggak???
>
> Saran, Ide, Kritik kita bahas disini.. nggak perlu ke
>DPR, percuma...
-> Maksudnya apa sih ? ... Wakarani ...
Me,
Delphi OK
===========================================================================================
"Dapatkan hadiah utama sebuah sepeda motor, dengan mengikuti
Netkuis Ramadhan TELKOM Jakarta di http://netkuis1.plasa.com/jakarta/ramadhan"
===========================================================================================
Berlangganan: [EMAIL PROTECTED]
Stop Berlangganan: [EMAIL PROTECTED]
Keluhan Milis(Unbouncing,spam,dll): [EMAIL PROTECTED]
| Yahoo! Groups Sponsor | |
|
|
Yahoo! Groups Links
- To visit your group on the web, go to:
http://groups.yahoo.com/group/Delphindo/
- To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
- Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
