Andreas, sorry this is the correct analyse for the query.
This is the index i created :
CREATE INDEX tbltransaksi_idx10 ON public.tbltransaksi
USING btree ((date_part('year'::text, tanggal)));
This is the analyse of the query
"Limit (cost=346377.92..346380.42 rows=1000 width=376)"
" Output: qry1.id, qry1.nama, qry1.kodebarang, qry1.namabarang, (sum(CASE WHEN
(qry1.bulan = 1::double precision) THEN qry1.keluar ELSE 0::numeric END)),
(sum(CASE WHEN (qry1.bulan = 2::double precision) THEN qry1.keluar ELSE
0::numeric END)), (sum(CASE WH (...)"
" CTE qry1"
" -> Hash Join (cost=4444.64..62681.16 rows=766491 width=84)"
" Output: tbltransaksi.tanggal, date_part('month'::text,
(tbltransaksi.tanggal)::timestamp without time zone), tblsupplier.id,
tblsupplier.nama, tbltransaksi.kodebarang, tblproduk.namabarang,
tbltransaksi.keluar, CASE WHEN (tbltransaksi.discount <= (...)"
" Hash Cond: ((tbltransaksi.kodebarang)::text =
(tblproduk.produkid)::text)"
" -> Seq Scan on public.tbltransaksi (cost=0.00..24702.53
rows=766491 width=29)"
" Output: tbltransaksi.id, tbltransaksi.tanggal,
tbltransaksi.kodebarang, tbltransaksi.masuk, tbltransaksi.keluar,
tbltransaksi.satuan, tbltransaksi.keterangan, tbltransaksi.jenis,
tbltransaksi.harga, tbltransaksi.discount, tbltransaksi.juali (...)"
" Filter: ((tbltransaksi.jualid IS NOT NULL) OR
((tbltransaksi.returjualid IS NOT NULL) AND (date_part('year'::text,
(tbltransaksi.tanggal)::timestamp without time zone) = 2013::double
precision)))"
" -> Hash (cost=3380.52..3380.52 rows=85130 width=68)"
" Output: tblproduk.namabarang, tblproduk.produkid,
tblsupplier.id, tblsupplier.nama"
" -> Hash Join (cost=21.68..3380.52 rows=85130 width=68)"
" Output: tblproduk.namabarang, tblproduk.produkid,
tblsupplier.id, tblsupplier.nama"
" Hash Cond: ((tblproduk.supplierid)::text =
(tblsupplier.id)::text)"
" -> Seq Scan on public.tblproduk (cost=0.00..2188.30
rows=85130 width=51)"
" Output: tblproduk.produkid, tblproduk.namabarang,
tblproduk.hargajual, tblproduk.subkategoriid, tblproduk.createby,
tblproduk.kodepromo, tblproduk.satuan, tblproduk.foto, tblproduk.pajak,
tblproduk.listingfee, tblproduk.supplier (...)"
" -> Hash (cost=14.08..14.08 rows=608 width=26)"
" Output: tblsupplier.id, tblsupplier.nama"
" -> Seq Scan on public.tblsupplier
(cost=0.00..14.08 rows=608 width=26)"
" Output: tblsupplier.id, tblsupplier.nama"
" -> Sort (cost=283696.76..283888.39 rows=76650 width=376)"
" Output: qry1.id, qry1.nama, qry1.kodebarang, qry1.namabarang,
(sum(CASE WHEN (qry1.bulan = 1::double precision) THEN qry1.keluar ELSE
0::numeric END)), (sum(CASE WHEN (qry1.bulan = 2::double precision) THEN
qry1.keluar ELSE 0::numeric END)), (sum(C (...)"
" Sort Key: (sum(COALESCE(qry1.keluar, 0::numeric)))"
" -> GroupAggregate (cost=221240.80..279494.13 rows=76650 width=376)"
" Output: qry1.id, qry1.nama, qry1.kodebarang, qry1.namabarang,
sum(CASE WHEN (qry1.bulan = 1::double precision) THEN qry1.keluar ELSE
0::numeric END), sum(CASE WHEN (qry1.bulan = 2::double precision) THEN
qry1.keluar ELSE 0::numeric END), sum( (...)"
" -> Sort (cost=221240.80..223157.03 rows=766491 width=376)"
" Output: qry1.id, qry1.nama, qry1.kodebarang,
qry1.namabarang, qry1.bulan, qry1.keluar"
" Sort Key: qry1.id, qry1.nama, qry1.kodebarang,
qry1.namabarang"
" -> CTE Scan on qry1 (cost=0.00..15329.82 rows=766491
width=376)"
" Output: qry1.id, qry1.nama, qry1.kodebarang,
qry1.namabarang, qry1.bulan, qry1.keluar"
On Dec 1, 2013, at 3:12 PM, Andreas Kretschmer wrote:
> Hengky Liwandouw <[email protected]> wrote:
>>
>> But the problem is : when i change the where clause to :
>>
>> where jualid is not null or returjualid is not null
>> and extract(year from tanggal)='2013')
>
> Try to create this index:
>
> create index xxx on public.tbltransaksi((extract(year from tanggal)))
> where jualid is not null or returjualid is not null;
>
> an run the query again, and if this not helps show us explain analyse,
> you can use explain.depesz.com to provide us the plan.
>
>
> Andreas
> --
> Really, I'm not out to destroy Microsoft. That will just be a completely
> unintentional side effect. (Linus Torvalds)
> "If I was god, I would recompile penguin with --enable-fly." (unknown)
> Kaufbach, Saxony, Germany, Europe. N 51.05082°, E 13.56889°
>
>
> --
> Sent via pgsql-performance mailing list ([email protected])
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-performance
--
Sent via pgsql-performance mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-performance