Maaf linknya rusak
ini querynya:
http://docs.google.com/View?id=df9tz3kc_50cbnx97ht

output query planner:
http://docs.google.com/View?id=df9tz3kc_47hkpcjwfr

dan tabel2 yg digunakan:
http://docs.google.com/View?id=df9tz3kc_46g8pcsqdn

saat ini saya masih mencoba merubah query tersebut kedalam function


--- In [email protected], "Aal-Rafizeldi" <rafize...@...> wrote:
>
> Dear all..
> Maaf sebelumnya, sebenarnya saya pakai postgresql tapi saya belum ketemu
> komunitasnya.
> Saya  dapat tugas untuk mentuning query, dan saya  benar2 baru
> menghadapi sql sebanyak ini,
> saya mohon bantuan & saran2 dari senior2 sekalian
> 
> eksekusinya butuh waktu +-50 detik
> saya tidak punya akses ke server
> tabel skala_rental memiliki +2jt baris,
> tabel cf_application & personal_main memiliki 100-200 ribuan baris
> didalam file ini hasil query plannya queryplan.txt
> <http://f1.grp.yahoofs.com/v1/gDPUSgXg77QE4witcOu9K1QeqrcyQIggAeaiRE6vut\
> ne7ZwHeGtTv09UJoJUHLeYwxWqB3tcB-1jo44lOmgvJmlueDCa8hE/queryplan-mri>
> dan ini struktur tabel yg terkait table.txt
> <http://f1.grp.yahoofs.com/v1/kEHUStg0LAu_jmD6JHF2oSqwn9taEhxjkWpQB-BY7W\
> EZgYMxpk6nH8jVTnqazSoecJXhgAPVLQGv9sWMNm72OCRNca6HIMk/table-mri>
> 
> 1. Menurut teman2 sekalian apakah query dibawah ini sudah optimal jika
> dilihat dari penulisannya??
> 2. Jika belum, bagaimana cara mengoptimalkannya??
> querynya:
> 
> select
> cf.cf_application_id as Id490_0_,
> '' as CfApplic2_490_0_,
> cf.cf_drawdown_number as Drawdown3_490_0_,
> '' as OldDrawd4_490_0_,
> p.full_name as Personal5_490_0_,
> c.name as Corporat6_490_0_,
> coalesce( (select name
>             from lookup
>             where lookup_id = pe.employment_status_id), 'NON GROUP'
>          ) as Group490_0_,
> 
> --principle +1 tahun, 2009/1/1
> coalesce( (select sum(principle)
>             from skala_rental
>             where cf_application_id = cf.cf_application_id
>               and (payment_date is null or payment_date > '2008/1/1')
>               and counter <> 0
>               and due_date <= dateadd('year', 1, '2008/1/1')), 0
>          ) as Principle8_490_0_,
> --interest +1 tahun, 2009/1/1
> coalesce( (select sum(interest)
>             from skala_rental
>             where cf_application_id = cf.cf_application_id
>               and (payment_date is null or payment_date > '2008/1/1')
>               and counter <> 0
>               and due_date <= dateadd('year', 1, '2008/1/1')), 0
>          ) as Interest12_490_0_,
> 
> --principle    (2009/1/1 + 1hari) - 2010/1/1
> coalesce( (select sum(principle)
>             from skala_rental
>             where cf_application_id = cf.cf_application_id
>               and due_date between dateadd('day', 1, dateadd('year', 1,
> '2008/1/1'))
>               and dateadd('year', 2, '2008/1/1')), 0
>          ) as Principle9_490_0_,
> --interest    (2009/1/1 + 1hari) - 2010/1/1
> coalesce( (select sum(interest)
>             from skala_rental
>             where cf_application_id = cf.cf_application_id
>               and due_date between dateadd('day', 1, dateadd('year', 1,
> '2008/1/1'))
>               and dateadd('year', 2, '2008/1/1')), 0
>          ) as Interest13_490_0_,
> 
> --principle    (2010/1/1 + 1hari) - 2011/1/1
> coalesce( (select sum(principle)
>             from skala_rental
>             where cf_application_id = cf.cf_application_id
>               and due_date between dateadd('day', 1, dateadd('year', 2,
> '2008/1/1'))
>               and dateadd('year', 3, '2008/1/1')), 0
>          ) as Principle10_490_0_,
> --interest    (2010/1/1 + 1hari) - 2011/1/1
> coalesce( (select sum(interest)
>             from skala_rental
>             where cf_application_id = cf.cf_application_id
>               and due_date between dateadd('day', 1, dateadd('year', 2,
> '2008/1/1'))
>               and dateadd('year', 3, '2008/1/1')), 0
>          ) as Interest14_490_0_,
> 
> --principle > (2008 + 3)
> coalesce( (select sum(principle)
>             from skala_rental
>             where cf_application_id = cf.cf_application_id
>               and due_date > dateadd('year', 3, '2008/1/1')), 0
>          ) as Principle11_490_0_,
> --interest > (2008 + 3)
> coalesce( (select sum(interest)
>             from skala_rental
>             where cf_application_id = cf.cf_application_id
>               and due_date > dateadd('year', 3, '2008/1/1')), 0
>          ) as Interest15_490_0_,
> 
> coalesce( (sr.unearned + sr.interest), 0) as Unearne16_490_0_,
> coalesce(sr.outstanding_balance, 0) as OsGross490_0_,
> (select number_of_digit
>   from organization_setup
>   where organization_id = cf.organization_id
> ) as NumberO18_490_0_
> 
> from cf_application cf
>    left join personal_main p on p.personal_id = cf.personal_id
>    left join corporate_main c on c.corporate_id = cf.corporate_id
>    left join personal_employment pe on pe.personal_id = p.personal_id
>    join skala_rental sr on sr.cf_application_id = cf.cf_application_id
> 
> where 1=1
>    and cf.drawdown_date <= '2008/1/1'
>    and (cf.terminate_date is null or cf.terminate_date > '2008/1/1')
>    and sr.counter = (select min(counter)
>                      from skala_rental
>                      where cf_application_id = cf.cf_application_id
>                        and (payment_date is null or payment_date >
> '2008/1/1')
>                        and counter <> 0)
>    and cf.branch_id = 2
> order by cf.cf_drawdown_number
> 
> 
> 
> 
> 
> 
> [Non-text portions of this message have been removed]
>


Kirim email ke