Mas Aji,

L.L_id (PK) => by default harusnya sudah ada indexnya karena Primary Key.
S.S_id (PK) => by default harusnya sudah ada indexnya karena Primary Key.
L.S_id (FK) => by default belum ada indexnya.

berdasarkan where clause yg ada:
where l.S_id = s.S_id
 and l.L_id = 1234

Data akan dicari berdasarkan urutan sbb: (Asumsinya menggunakan Rule Base 
Optimizer)

1. data di table L dgn nilai L_id = 1234 akan dicari terlebih dulu,
karena L_id adalah Primary Key , maka kemungkinan data yg didapat hanya 1 atau 
0. Karena L_id-nya  sudah terindex (Primary Key), maka plan-nya adalah UNIQUE 
INDEX SCAN. Dari pengaksesan index akan didapat ROWID. Dengan rowid tsb akan 
dicari recordnya. Termasuk data utk column L.S_id.

2. Dari data L.S_id yg didapat, sebut saja nilai L.S_id = 5678
akan dicari data dari table S (s_id) yg nilainya 5678. Karena S.S_id adalah 
primary key, kemungkinan data yg didapat hanya 1 atau 0.Karena S.S_id-nya  
terindex (Primary Key), maka plan-nya adalah UNIQUE INDEX SCAN, bukan FULL 
TABLE SCAN.

cmiiw,
bw

--- In [email protected], Aji Perdana <aji_perd...@...> wrote:
>
> Halo Masters,
> 
> Numpang tanya, klo ada table yg isinya bisa jutaan baris data dan ter-index 
> (tbl_L)
> di query join dengan table lain yg isinya cuma puluhan baris tapi tidak 
> ter-index (tbl_S)
> apakah query yg di execute akan berlaku indexnya atau tetap fullscan table?
> 
> berikut simulasinya:
> tbl_L
> ==========
> L_id (PK) -> "index1"
> S_id (FK) -> "index1"
> data
> 
> tbl_S
> ==========
> S_id (PK)
> data
> 
> Query :
> select l.data, s.data
> from
> tbl_L l,
> tbl_S s,
> where l.S_id = s.S_id
> and l.L_id = 1234
> 
> 
> Mohon pencerahannya 
> Terimakasih
> 
> Regards,
> Aji
> 
> 
>       
> 
> [Non-text portions of this message have been removed]
>


Kirim email ke