Re: Slow query. Any way to speed up?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Duh sorry.  We will eventually move to 8.x, it's just a matter of finding
the time:

Explain analyze
Select gmmid, gmmname, divid, divname, feddept, fedvend,itemnumber as
mstyle,amc_week_id,
sum(tran_itm_total) as net_dollars

FROM
public.tbldetaillevel_report a2 join  cdm.cdm_ddw_tran_item a1  on
a1.item_upc = a2.upc
join public.date_dim a3 on a3.date_dim_id = a1.cal_date
where
a3.date_dim_id between '2005-10-30' and '2005-12-31'
and
a1.appl_id  in  ('MCOM','NET')
and
 a1.tran_typ_id in ('S','R')
group by 1,2,3,4,5,6,7,8
order by 1,2,3,4,5,6,7,8


GroupAggregate  (cost=1648783.47..1650793.74 rows=73101 width=65) (actual
time=744556.289..753136.278 rows=168343 loops=1)
  ->  Sort  (cost=1648783.47..1648966.22 rows=73101 width=65) (actual
time=744556.236..746634.566 rows=1185096 loops=1)
        Sort Key: a2.gmmid, a2.gmmname, a2.divid, a2.divname, a2.feddept,
a2.fedvend, a2.itemnumber, a3.amc_week_id
        ->  Merge Join  (cost=1598067.59..1642877.78 rows=73101 width=65)
(actual time=564862.772..636550.484 rows=1185096 loops=1)
              Merge Cond: ("outer".upc = "inner".item_upc)
              ->  Index Scan using report_upc_idx on tbldetaillevel_report
a2  (cost=0.00..47642.36 rows=367309 width=58) (actual
time=82.512..65458.137 rows=365989 loops=1)
              ->  Sort  (cost=1598067.59..1598250.34 rows=73100 width=23)
(actual time=564764.506..566529.796 rows=1248862 loops=1)
                    Sort Key: a1.item_upc
                    ->  Hash Join  (cost=94.25..1592161.99 rows=73100
width=23) (actual time=493500.913..548924.039 rows=1248851 loops=1)
                          Hash Cond: ("outer".cal_date =
"inner".date_dim_id)
                          ->  Seq Scan on cdm_ddw_tran_item a1
(cost=0.00..1547562.88 rows=8754773 width=23) (actual
time=14.219..535704.691 rows=10838135 loops=1)
                                Filter: ((((appl_id)::text = 'MCOM'::text)
OR ((appl_id)::text = 'NET'::text)) AND ((tran_typ_id = 'S'::bpchar) OR
(tran_typ_id = 'R'::bpchar)))
                          ->  Hash  (cost=94.09..94.09 rows=64 width=8)
(actual time=362.953..362.953 rows=0 loops=1)
                                ->  Index Scan using date_date_idx on
date_dim a3  (cost=0.00..94.09 rows=64 width=8) (actual
time=93.710..362.802 rows=63 loops=1)
                                      Index Cond: ((date_dim_id >=
'2005-10-30'::date) AND (date_dim_id <= '2005-12-31'::date))
Total runtime: 753467.847 ms


Patrick Hatcher
Development Manager  Analytics/MIO
Macys.com
415-422-1610



                                                                           
             Tom Lane                                                      
             <tgl@xxxxxxxxxxxx                                             
             s>                                                         To 
                                       Patrick Hatcher                     
             01/05/06 09:07 PM         <PHatcher@xxxxxxxxx>                
                                                                        cc 
                                       pgsql-performance@xxxxxxxxxxxxxx    
                                                                   Subject 
                                       Re: [PERFORM] Slow query. Any way   
                                       to speed up?                        
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           




Patrick Hatcher <PHatcher@xxxxxxxxx> writes:
> The following SQL takes 4+ mins to run.  I have indexes on all join
fields
> and I've tried rearranging the table orders but haven't had any luck.

Please show EXPLAIN ANALYZE output, not just EXPLAIN.  It's impossible
to tell whether the planner is making any wrong guesses when you can't
see the actual times/rowcounts ...

(BTW, 7.4 is looking pretty long in the tooth.)

                                     regards, tom lane




[Postgresql General]     [Postgresql PHP]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Yosemite]

  Powered by Linux