pg.ddx.io  pgsql-performance@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Hengky Liwandouw <hengkyliwandouw@gmail.com>
To: pgsql-performance@postgresql.org
Cc: Andreas Kretschmer <akretschmer@spamfence.net>
Subject: Re: Speed up the query
Date: Sun, 1 Dec 2013 16:31:48 +0800
Message-ID: <35F37CEE-43DA-4B06-9DB8-953A1998B21A@gmail.com> (raw)
In-Reply-To: <20131201071231.GA4780@tux>
References: <B097B80F-2D51-4F42-BC0D-5A38CBCD0C01@gmail.com>
	<20131201071231.GA4780@tux>
List-Unsubscribe:  <mailto:majordomo@postgresql.org?body=unsub%20pgsql-performance>

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 <hengkyliwandouw@gmail.com> 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 (pgsql-performance@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-performance



-- 
Sent via pgsql-performance mailing list (pgsql-performance@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-performance



view thread (15+ messages)  latest in thread

Message-ID: <35F37CEE-43DA-4B06-9DB8-953A1998B21A@gmail.com>
Permalink:  ../35F37CEE-43DA-4B06-9DB8-953A1998B21A@gmail.com/
Also on:    postgresql.org/message-id/35F37CEE-43DA-4B06-9DB8-953A1998B21A@gmail.com

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-performance@postgresql.org
  Cc: hengkyliwandouw@gmail.com, akretschmer@spamfence.net
  Subject: Re: Speed up the query
  In-Reply-To: <35F37CEE-43DA-4B06-9DB8-953A1998B21A@gmail.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox