Any advice tuning this query ? - Mailing list pgsql-performance

From Henrik Ekenberg
Subject Any advice tuning this query ?
Date
Msg-id 20161111161908.Horde.cKoJtI5NzvW4R1L4Y2MGJct@box1242.bluehost.com
Whole thread Raw
Responses Re: Any advice tuning this query ?  (Devrim Gündüz <devrim@gunduz.org>)
Re: Any advice tuning this query ?  (Andreas Karlsson <andreas@proxel.se>)
Re: Any advice tuning this query ?  (Jeff Janes <jeff.janes@gmail.com>)
List pgsql-performance

Hi,

I have a select moving around a lot of data and takes times
Any advice tuning this query ?

EXPLAIN (ANALYZE ON, BUFFERS ON)
    select
    d.books,
    d.date publish_date,
    extract(dow from d.date) publish_dow,
    week_num_fixed,
    coalesce(sum(case when i.invno is not null then 1 else 0 end),0) as daily_cnt,
    coalesce(sum(i.activation_amount_sek),0) as daily_amt_sek
    from dates_per_books d
    left join publishing_data i on (d.books=i.books and d.date=i.publish_date)
    group by 1,2,3,4;

( explain : https://explain.depesz.com/s/aDOi )
    
                                                                                            QUERY PLAN                                                                                        
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 GroupAggregate  (cost=44606264.52..48172260.66 rows=4318263 width=68) (actual time=839980.887..1029679.771 rows=43182733 loops=1)
   Group Key: d.books, d.date, (date_part('dow'::text, (d.date)::timestamp without time zone)), d.week_num_fixed
   Buffers: shared hit=3, local hit=10153260 read=165591641, temp read=2097960 written=2097960
   I/O Timings: read=399828.103
   ->  Sort  (cost=44606264.52..45104896.89 rows=199452945 width=48) (actual time=839980.840..933883.311 rows=283894005 loops=1)
         Sort Key: d.books, d.date, (date_part('dow'::text, (d.date)::timestamp without time zone)), d.week_num_fixed
         Sort Method: external merge  Disk: 16782928kB
         Buffers: shared hit=3, local hit=10153260 read=165591641, temp read=2097960 written=2097960
         I/O Timings: read=399828.103
         ->  Merge Left Join  (cost=191.15..13428896.40 rows=199452945 width=48) (actual time=0.031..734937.112 rows=283894005 loops=1)
               Merge Cond: ((d.books = i.books) AND (d.date = i.publish_date))
               Buffers: local hit=10153260 read=165591641
               I/O Timings: read=399828.103
               ->  Index Scan using books_date on dates_per_books d  (cost=0.56..1177329.91 rows=43182628 width=20) (actual time=0.005..33789.216 rows=43182733 loops=1)
                     Buffers: local hit=10 read=475818
                     I/O Timings: read=27761.376
               ->  Index Scan using activations_books_date on publishing_data i  (cost=0.57..7797117.25 rows=249348384 width=32) (actual time=0.004..579806.706 rows=249348443 loops=1)
                     Buffers: local hit=10153250 read=165115823
                     I/O Timings: read=372066.727
 Planning time: 2.864 ms
 Execution time: 1034284.193 ms
(21 rows)

(END)

pgsql-performance by date:

Previous
From: Marc Mamin
Date:
Subject: Re: Inlining of functions (doing LIKE on an array)
Next
From: Devrim Gündüz
Date:
Subject: Re: Any advice tuning this query ?